Entegrasyonlar
SingleMail'e her dilden düz bir HTTPS isteğiyle, kodu değiştirilemeyen uygulamalardan ise SMTP ile bağlanabilirsiniz. Aşağıdaki örneklerde adresler bu kurulumun gerçek değerleriyle dolduruldu.
Node.js / TypeScript
npm i @singlemail/node
SINGLEMAIL_API_KEY=sm_… SINGLEMAIL_BASE_URL=https://api.singlemail.singleton.com.tr
import { SingleMail } from "@singlemail/node";
const sm = new SingleMail();
// Ek dosya ve zamanlama ile
const { data, error } = await sm.emails.send({
from: "Uygulama <no-reply@firma.com>",
to: ["ali@ornek.com"],
subject: "Aylık raporunuz",
html: "<p>Rapor ektedir.</p>",
attachments: [{ filename: "rapor.pdf", content: await fs.readFile("rapor.pdf") }],
tags: [{ name: "type", value: "report" }],
scheduledAt: "in 1 hour",
}, { idempotencyKey: "report-2026-10" });
if (error) console.error(error.name, error.message);SDK hata durumunda istisna fırlatmaz; her çağrı { data, error } döner. Aynı idempotencyKey ile tekrarlanan istek ikinci bir e-posta oluşturmaz, bu yüzden ağ hatalarında güvenle tekrar deneyebilirsiniz.
packages/sdk). Diğer projelerinizde kurmak için şirket içi npm registry'nize yayınlayın ya da doğrudan REST kullanın.PHP
$ch = curl_init("https://api.singlemail.singleton.com.tr/emails");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("SINGLEMAIL_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"from" => "Uygulama <no-reply@firma.com>",
"to" => ["ali@ornek.com"],
"subject" => "Siparişiniz alındı",
"html" => "<p>…</p>",
]),
]);
$res = json_decode(curl_exec($ch), true); // ["id" => "…"].NET (C#)
var http = new HttpClient { BaseAddress = new Uri("https://api.singlemail.singleton.com.tr") };
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", config["SingleMail:ApiKey"]);
var res = await http.PostAsJsonAsync("/emails", new {
from = "Uygulama <no-reply@firma.com>",
to = new[] { "ali@ornek.com" },
subject = "Randevunuz onaylandı",
html = "<p>…</p>",
});
res.EnsureSuccessStatusCode();Python
import os, requests
r = requests.post(
"https://api.singlemail.singleton.com.tr/emails",
headers={"Authorization": f"Bearer {os.environ['SINGLEMAIL_API_KEY']}"},
json={"from": "Uygulama <no-reply@firma.com>", "to": ["ali@ornek.com"], "subject": "…", "html": "<p>…</p>"},
timeout=10,
)
r.raise_for_status()
print(r.json()["id"])SMTP
API çağıramayan uygulamalar SingleMail'i normal bir SMTP sunucusu gibi kullanabilir. SMTP ile gelen e-postalar da aynı kuyruğa, aynı loglara düşer; DKIM imzası ve takip aynen uygulanır.
| Ayar | Değer |
|---|---|
| Sunucu | api.singlemail.singleton.com.tr |
| Port | 2587 |
| Şifreleme | STARTTLS |
| Kullanıcı adı | singlemail |
| Şifre | API anahtarınız (sm_…) |
MAIL_MAILER=smtp MAIL_HOST=api.singlemail.singleton.com.tr MAIL_PORT=2587 MAIL_USERNAME=singlemail MAIL_PASSWORD=sm_… MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=no-reply@firma.com
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = "api.singlemail.singleton.com.tr" EMAIL_PORT = 2587 EMAIL_HOST_USER = "singlemail" EMAIL_HOST_PASSWORD = os.environ["SINGLEMAIL_API_KEY"] EMAIL_USE_TLS = True
WordPress: “WP Mail SMTP” eklentisinde Other SMTP seçin ve yukarıdaki değerleri girin.
n8n: “Send Email” düğümünde yeni bir SMTP kimlik bilgisi oluşturun ya da “HTTP Request” düğümüyle POST /emails çağırın. HTTP yöntemiyle etiket ve idempotency anahtarı da gönderebilirsiniz.
Sınırlar
| Sınır | Değer |
|---|---|
| İstek hızı | Proje başına saniyede 10 istek (yönetici değiştirebilir) |
| Alıcı | E-posta başına en fazla 50 (to + cc + bcc) |
| Toplu gönderim | İstek başına 100 e-posta |
| Boyut | API'de istek başına 40 MB, SMTP'de 25 MB; ek URL'leri (path) en fazla 10 MB |
| Özel başlıklar | En fazla 20; List-Unsubscribe, In-Reply-To, References ve X-* (X-SES-* ve X-SingleMail-* hariç) |
| Zamanlama | En fazla 30 gün ileri |
| Günlük kota | Yönetici proje bazında belirler |
Hata kodlarının tamamı API referansında.