Um die E-Mail-Sicherheit zu verbessern und eine zuverlässige Zustellung von E-Mails in großen Mengen zu gewährleisten, sollten Sie von der alten Mail API zu einem standardmäßigen E-Mail-Drittanbieterdienst migrieren, der das Simple Mail Transfer Protocol (SMTP) verwendet, z. B. SendGrid, Mailgun oder Mailjet.
In dieser Anleitung wird beschrieben, wie Sie ausgehende E‑Mail-Dienste von der Mail API zu einem SMTP-basierten E‑Mail-Dienst migrieren. Sie können diese Anleitung verwenden, um zu einem beliebigen SMTP-basierten Drittanbieter für E-Mail-Dienste zu migrieren oder eine andere unterstützte Laufzeit zu verwenden. Diese Anleitung enthält keine Schritte für die Migration eingehender Nachrichten, für die eine Drittanbieter-Alternative verwendet wird.
Der SMTP-Standard bietet gegenüber der alten App Engine Mail API die folgenden Vorteile:
SMTP-basierte Dienste verbessern die E‑Mail-Zustellung, da die Wahrscheinlichkeit verringert wird, dass E‑Mails als Spam markiert werden.
Bei SMTP-basierten Diensten können Sie auf detaillierte Analyseberichte zu geöffneten E-Mails, Klicks und Bounces zugreifen. Diese Berichte enthalten nützliche Informationen dazu, wie Nutzer mit Ihren E‑Mails interagieren.
Sie haben die volle Kontrolle über Ihren Absenderruf und die E‑Mail-Authentifizierung.
Höhere tägliche Sendelimits im Vergleich zur alten Mail API mit Zugriff auf erweiterte Funktionen wie A/B-Tests, Segmentierung und Vorlagen.
Übersicht über den Migrationsprozess
Der Migrationsprozess umfasst die folgenden Schritte:
- Richten Sie den SMTP-basierten E‑Mail-Dienst ein, um Ihre SMTP-Anmeldedaten zu erhalten.
- Bestätigen Sie Ihre Absenderidentität, um sich mit Ihrer Domain oder E‑Mail-Adresse zu authentifizieren.
- Konfigurieren Sie Ihre Quelldateien mit Ihren SMTP-Anmeldedaten und der Sendemethode und stellen Sie dann Ihre Anwendung bereit.
- Testen Sie Ihre Anwendung, um die E‑Mail-Funktionen zu prüfen.
SMTP-basierten E‑Mail-Dienst einrichten
Richten Sie ein Konto bei einem Standard-E-Mail-Drittanbieter ein, der SMTP verwendet, z. B. SendGrid, Mailgun oder Mailjet, und rufen Sie die folgenden Informationen von Ihrem ausgewählten Anbieter ab:
SMTP-Host: Die SMTP-Serveradresse, die zum Senden von E-Mails verwendet wird. Beispiel:
smtp.sendgrid.netoderexample.mailjet.com.Port: Die Portnummer für die Verbindung. Zum Beispiel
587für die TLS-Verschlüsselung.Nutzername: Der SMTP-Anmeldename Ihres Kontos.
Passwort oder API-Schlüssel: Das Passwort Ihres Kontos oder ein API-Schlüssel, der als Passwort für die SMTP-Verbindung dient. Bei einigen Anbietern wie SendGrid ist der Nutzername ein fester Wert wie
apikeyund der API-Schlüssel wird als Passwort verwendet.
Absenderidentität bestätigen
Um Spam zu verhindern, müssen Sie bei allen E‑Mail-Diensten bestätigen, dass Sie der Inhaber der E‑Mail-Adresse oder Domain sind, von der Sie E‑Mails senden. Dazu müssen Sie häufig bestimmte DNS-Details wie CNAME-Einträge auf der DNS-Verwaltungsseite Ihres Domainhosts hinzufügen.
Folgen Sie der Anleitung Ihres Anbieters, um Ihre Absenderidentität zu bestätigen, bevor Sie mit der Konfiguration der Anwendung fortfahren.
So fügen Sie Ihrem Domainhost DNS-Einträge hinzu:
- Melden Sie sich beim Dienst Ihres DNS-Anbieters an.
- Rufen Sie die Seite für die DNS-Verwaltung für Ihre Domain auf.
Fügen Sie die CNAME-Einträge genau so hinzu, wie sie von Ihrem E‑Mail-Dienstanbieter angegeben wurden. Gehen Sie für jeden Datensatz so vor:
- Geben Sie im Feld Name oder Host die Hostdetails ein.
- Geben Sie im Feld Punkte oder Wert den Wert ein.
Es kann einige Stunden dauern, bis DNS-Änderungen aktiv werden. Wenn die Bestätigung fehlschlägt, warten Sie einige Zeit und versuchen Sie es dann noch einmal.
Quelldateien konfigurieren
So fügen Sie die SMTP-Funktion hinzu:
Führen Sie den folgenden Befehl aus, um das App Engine SDK auf die neueste Version zu aktualisieren:
# Ensure your virtual environment is active pip install --upgrade appengine-python-standard # Save the new version to your requirements file pip freeze > requirements.txtFügen Sie in Ihrer
app.yaml-Datei den folgenden Code hinzu, um zum SMTP-Dienst zu wechseln:runtime: RUNTIME # a supported python version env_variables: # Enable the SMTP service. APPENGINE_USE_SMTP_MAIL_SERVICE: "true" # --- SMTP Server Configuration --- # The server address from your mail provider APPENGINE_SMTP_HOST: "SMTP_HOST" # The recommended port for TLS connections APPENGINE_SMTP_PORT: "587" # The username for your SMTP login APPENGINE_SMTP_USER: "SMTP_USER" # The API key or password APPENGINE_SMTP_PASSWORD: "SMTP_PASSWORD" # Use TLS for a secure connection APPENGINE_SMTP_USE_TLS: "true" # --- For sending emails to Admins --- # A comma-separated list of admin email addresses. # This is required if you use the send_mail_to_admins() function. APPENGINE_ADMIN_EMAIL_RECIPIENTS: "admin@example.com,another-admin@example.com"Ersetzen Sie Folgendes:
- RUNTIME: Eine unterstützte Python-Laufzeitversion.
- SMTP_HOST: Die SMTP-Hostadresse. Beispiel:
smtp.sendgrid.netoderexample.mailjet.com. - SMTP_USER: Der SMTP-Anmeldenutzername Ihres Kontos. Beispiel:
apiKey. - SMTP_PASSWORD: Das Passwort oder der API-Schlüssel, den Sie von Ihrem Drittanbieter für E-Mail-Dienste erhalten haben. Aus Sicherheitsgründen empfehlen wir, den API-Schlüssel in Secret Manager zu speichern, anstatt ihn in der Datei
app.yamlzu platzieren. - Wenn Sie die Funktion
send_mail_to_admins()nicht verwenden, lassen Sie die EinstellungAPPENGINE_ADMIN_EMAIL_RECIPIENTSweg.
Führen Sie den folgenden Befehl aus, um die Anwendung bereitzustellen:
gcloud app deploy
Anwendung testen
Die Migration ist erfolgreich, wenn Sie Ihre Anwendung fehlerfrei bereitstellen können. So prüfen Sie, ob Ihr E‑Mail-Dienst funktioniert:
- Lösen Sie den Teil Ihrer Anwendung aus, der eine E‑Mail sendet.
- Prüfen Sie im Log-Explorer, ob Fehler im Zusammenhang mit den API-Aufrufen oder dem SMTP-Verbindungsversuch vorliegen.
- Melden Sie sich im Konto Ihres E‑Mail-Drittanbieters an (z.B. Mailgun, Mailjet, SendGrid) und prüfen Sie den Aktivitätsfeed, die Logs oder das Zustellungs-Dashboard. Ihre Test-E‑Mail sollte im Feed mit dem Zustellstatus
Processed,Deliveredoder ähnlich angezeigt werden.