DocsBald verfügbar

SMTP

Über smtp.letr.dev aus Tools versenden, die nur SMTP sprechen, mit einem API-Key als Passwort.

Für ein Framework, einen Anmeldedienst oder eine App, die nur über SMTP versenden kann. Eine über SMTP versendete E-Mail ist eine E-Mail wie jede andere: Sie erscheint in der API und im Dashboard mit denselben Ereignissen und Webhooks.

Verbindung

Einstellung Wert
Host smtp.letr.dev
Port 465 mit implizitem TLS oder 587 mit STARTTLS (Pflicht)
Benutzername letr
Passwort Ein API-Key mit sending_access oder full_access
Authentifizierung PLAIN oder LOGIN
Versand über SMTPIhre App verbindet sich mit smtp.letr.dev auf Port 465 mit TLS von Anfang an oder auf Port 587 und startet TLS dann mit STARTTLS. Über TLS sendet sie EHLO, meldet sich mit AUTH PLAIN oder LOGIN an, mit dem Benutzernamen letr und einem API-Key als Passwort, und sendet die Nachricht mit MAIL FROM, RCPT TO und DATA. letr.dev antwortet mit 250 und der ID der E-Mail und behandelt die E-Mail ab da wie eine aus POST /v1/emails.smtp.letr.devIhre Appalt[Port 465][Port 587]danach derselbe Weg wie POST /v1/emails,mit denselben Ereignissen und Webhooksverbinden, TLS von Anfang anverbinden, EHLOSTARTTLSEHLO über TLSAUTH PLAIN oder LOGINBenutzername letr, Passwort: ein API-KeyMAIL FROM, RCPT TO, DATA250 2.0.0 OK: queued as <id>

Die Domain-Beschränkungen des Keys gelten: Ein Key, der auf bestimmte Domains beschränkt ist, versendet nur von diesen. Verwenden Sie pro Tool einen eigenen Key, dann erneuern oder widerrufen Sie einen, ohne die anderen anzutasten. Widerrufen Sie einen Key, enden offene Sitzungen mit diesem Key bei ihrer nächsten Nachricht.

Dieselben Regeln wie die API

Eine über SMTP versendete Nachricht nimmt denselben Weg wie POST /v1/emails: Es gelten eine verifizierte Absenderdomain, die Sperrliste, 50 Empfänger und 15 MB pro E-Mail wie versendet, gleich gemessen wie bei der API, Ihre Monatsobergrenze, die Tageslimite und die Testempfänger, und letr.dev ergänzt Feedback-ID und signiert mit DKIM.

letr.dev behält Ihre MIME-Struktur und Ihre Message-ID und wandelt Zeilenenden in CRLF um. Vor dem Signieren entfernt letr.dev Bcc, Feedback-ID und jeden X-Letr-*-Header ausser den beiden unten.

Limiten

Jeder Key darf 600 Nachrichten pro Minute über SMTP einliefern, ein eigenes Budget neben den 600 API-Anfragen pro Minute des Kontos; darüber ergibt MAIL FROM 451 4.7.1. Jedes Client-Netz darf so viele Anmeldungen pro Minute versuchen, wie die Minutenlimite der API erlaubt, erfolgreiche eingeschlossen (454 4.7.0 darüber). Eine Client-Adresse hält höchstens 5 Verbindungen gleichzeitig, jeder Port 200; eine Sitzung hat 30 Sekunden für die Anmeldung und endet nach 10 Minuten. Halten Sie eine Sitzung offen und senden Sie mehrere Nachrichten darüber, statt pro Nachricht neu zu verbinden.

Header von letr.dev

  • X-Letr-Tag: key=value setzt einen Tag, wie tags in der API. Wiederholen Sie den Header für weitere Tags, höchstens 10.
  • X-Letr-Idempotency-Key bedeutet dasselbe wie der HTTP-Header Idempotency-Key.
X-Letr-Tag: type=password-reset
X-Letr-Tag: app=web
X-Letr-Idempotency-Key: reset-7f3a2c

Antwortcodes

Lehnt letr.dev einen Befehl oder eine Nachricht ab, nennt die SMTP-Antwort den Grund:

  • 530: AUTH oder MAIL vor STARTTLS auf Port 587 oder MAIL ohne AUTH.
  • 535 5.7.8: unbekannter, widerrufener oder read_only-Key.
  • 454 4.7.0: zu viele Anmeldungen pro Minute aus Ihrem Netz, erfolgreiche eingeschlossen; siehe Limiten und versuchen Sie es später erneut.
  • 550 5.7.1: Die Absenderdomain ist nicht verifiziert oder liegt ausserhalb der Domain-Beschränkung des Keys.
  • 550 5.1.1: Die Empfängeradresse ist fehlerhaft oder der Empfänger steht auf der Sperrliste; nur dieser Empfänger wird abgelehnt.
  • 452 4.5.3: mehr als 50 Empfänger.
  • 552 5.3.4: Die Nachricht ist grösser als 15 MB wie versendet, mit den Headern und der DKIM-Signatur, die letr.dev ergänzt.
  • 554 5.6.0: Die Nachricht ist fehlerhaft, From fehlt oder enthält nicht genau eine Adresse, ein X-Letr-Tag ist ungültig oder der X-Letr-Idempotency-Key wurde bereits für eine andere Nachricht verwendet.
  • 451 4.7.1: Die Monatsobergrenze oder die Tageslimite ist erreicht, oder zu viele Anfragen; versuchen Sie es später erneut.
  • 451 4.3.0: ein vorübergehender interner Fehler; versuchen Sie es später erneut.
  • 554 5.7.0: Das Konto ist nicht aktiv (Zahlung ausstehend oder deaktiviert) oder pausiert.

Codes, die mit 4 beginnen, sind vorübergehend, und die meisten Tools wiederholen sie selbst.

Einrichtung

Die meisten Beispiele verwenden Port 587 mit STARTTLS. Legen Sie den API-Key in einem Secret-Speicher oder einer Umgebungsvariable ab, nie im Code.

Supabase Auth

Öffnen Sie im Supabase-Dashboard die SMTP-Einstellungen von Auth (/dashboard/project/_/auth/smtp), aktivieren Sie eigenes SMTP und tragen Sie Host, Port, Benutzername und Passwort von oben ein. Dasselbe über die Management-API von Supabase:

curl -X PATCH "https://api.supabase.com/v1/projects/$PROJECT_REF/config/auth" \
  -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "smtp_admin_email": "[email protected]",
    "smtp_sender_name": "Acme",
    "smtp_host": "smtp.letr.dev",
    "smtp_port": "587",
    "smtp_user": "letr",
    "smtp_pass": "'"$LETR_API_KEY"'"
  }'

Django

# settings.py
import os

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.letr.dev"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = "letr"
EMAIL_HOST_PASSWORD = os.environ["LETR_API_KEY"]
DEFAULT_FROM_EMAIL = "Acme <[email protected]>"

Für Port 465 setzen Sie EMAIL_USE_SSL = True statt EMAIL_USE_TLS; Django erlaubt nur eines von beiden.

Rails

# config/environments/production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: "smtp.letr.dev",
  port: 587,
  user_name: "letr",
  password: ENV.fetch("LETR_API_KEY"),
  authentication: :plain,
  enable_starttls: true
}

Spring Boot

# application.properties
spring.mail.host=smtp.letr.dev
spring.mail.port=587
spring.mail.username=letr
spring.mail.password=${LETR_API_KEY}
spring.mail.properties[mail.smtp.auth]=true
spring.mail.properties[mail.smtp.starttls.enable]=true
spring.mail.properties[mail.smtp.starttls.required]=true

Host, Port, Benutzername und Passwort sind die eigenen spring.mail.*-Eigenschaften von Spring Boot. Die Schlüssel mail.smtp.* für Anmeldung und STARTTLS sind Eigenschaften von Jakarta Mail, die Spring Boot über spring.mail.properties an die Mail-Session weitergibt.

WordPress

WordPress braucht ein SMTP-Plugin. Wählen Sie in WP Mail SMTP den Mailer Other SMTP und setzen Sie:

  • SMTP Host: smtp.letr.dev
  • Encryption: TLS
  • SMTP Port: 587
  • Authentication: ein
  • SMTP Username: letr
  • SMTP Password: Ihr API-Key

Für Port 465 wählen Sie die Verschlüsselung SSL.

Nextcloud

Nextcloud, hier auf Port 465 mit implizitem TLS:

// config/config.php
'mail_smtpmode' => 'smtp',
'mail_smtphost' => 'smtp.letr.dev',
'mail_smtpport' => 465,
'mail_smtpsecure' => 'ssl',
'mail_smtpauth' => true,
'mail_smtpname' => 'letr',
'mail_smtppassword' => 'letr_your_api_key',
'mail_from_address' => 'no-reply',
'mail_domain' => 'mail.acme.dev',