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 |
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=valuesetzt einen Tag, wietagsin der API. Wiederholen Sie den Header für weitere Tags, höchstens 10.X-Letr-Idempotency-Keybedeutet dasselbe wie der HTTP-HeaderIdempotency-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:AUTHoderMAILvorSTARTTLSauf Port 587 oderMAILohneAUTH.535 5.7.8: unbekannter, widerrufener oderread_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,Fromfehlt oder enthält nicht genau eine Adresse, einX-Letr-Tagist ungültig oder derX-Letr-Idempotency-Keywurde 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',