SingleMail
ENGiriş yap

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

terminal
npm i @singlemail/node
.env
SINGLEMAIL_API_KEY=sm_…
SINGLEMAIL_BASE_URL=https://api.singlemail.singleton.com.tr
mail.ts
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.

SDK şu an SingleMail deposunun içinde (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

mail.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#)

MailService.cs
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

mail.py
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.

AyarDeğer
Sunucuapi.singlemail.singleton.com.tr
Port2587
ŞifrelemeSTARTTLS
Kullanıcı adısinglemail
ŞifreAPI anahtarınız (sm_…)
Laravel .env
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
Django settings.py
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ırDeğ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
BoyutAPI'de istek başına 40 MB, SMTP'de 25 MB; ek URL'leri (path) en fazla 10 MB
Özel başlıklarEn fazla 20; List-Unsubscribe, In-Reply-To, References ve X-* (X-SES-* ve X-SingleMail-* hariç)
ZamanlamaEn fazla 30 gün ileri
Günlük kotaYönetici proje bazında belirler

Hata kodlarının tamamı API referansında.