Vom App Engine Mail-Dienst zu einem SMTP-basierten Dienst migrieren

Um die E‑Mail-Sicherheit zu verbessern und eine zuverlässige Zustellung von E‑Mails in großen Mengen zu gewährleisten, migrieren Sie vom Legacy-Mail-Dienst zu einem standardmäßigen E‑Mail-Dienst eines Drittanbieters, der das Simple Mail Transfer Protocol (SMTP) verwendet, z. B. SendGrid, Mailgun oder Mailjet.

In dieser Anleitung wird der Migrationsprozess für ausgehende E‑Mail-Dienste vom App Engine-Mail-Dienst zu einem SMTP-basierten E‑Mail-Dienst beschrieben. Sie können diese Anleitung verwenden, um zu einem beliebigen SMTP-basierten E‑Mail-Drittanbieter zu migrieren oder eine andere unterstützte Laufzeitumgebung zu verwenden. Diese Anleitung enthält keine Schritte zum Migrieren eingehender Nachrichten, die eine Alternative eines Drittanbieters verwenden.

Der SMTP-Standard bietet gegenüber dem Legacy-App Engine-Mail-Dienst die folgenden Vorteile:

  • SMTP-basierte Dienste bieten eine verbesserte E‑Mail-Zustellung, da die Wahrscheinlichkeit verringert wird, dass E‑Mails als Spam markiert werden.

  • Mit SMTP-basierten Diensten können Sie auf detaillierte Analysenberichte zu E‑Mail-Öffnungen, Klicks und Bounces zugreifen. Diese Berichte enthalten nützliche Informationen dazu, wie Nutzer mit Ihren E‑Mails interagieren.

  • Sie haben die vollständige Kontrolle über Ihre Absender-Reputation und die E‑Mail-Authentifizierung.

  • Höhere tägliche Sendelimits im Vergleich zum Legacy-Mail-Dienst mit Zugriff auf erweiterte Funktionen wie A/B-Tests, Segmentierung und Vorlagen.

Übersicht über den Migrationsprozess

Der Migrationsprozess umfasst die folgenden Schritte:

  1. Richten Sie den SMTP-basierten E‑Mail-Dienst ein, um Ihre SMTP-Anmeldedaten zu erhalten.
  2. Bestätigen Sie Ihre Absenderidentität, um sich mit Ihrer Domain oder E‑Mail-Adresse zu authentifizieren.
  3. Konfigurieren Sie Ihre Quelldateien mit Ihren SMTP-Anmeldedaten und der Sendemethode und stellen Sie dann Ihre Anwendung bereit.
  4. Testen Sie Ihre Anwendung, um die E‑Mail-Funktionalität zu prüfen.

SMTP-basierten E‑Mail-Dienst einrichten

Richten Sie ein Konto bei einem standardmäßigen 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.net oder example.mailjet.com.

  • Port: Die Portnummer für die Verbindung. Beispiel: 587 für die TLS-Verschlüsselung.

  • Nutzername: Der SMTP-Anmeldenutzername 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 apikey und 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. Dieser Schritt umfasst häufig das Hinzufügen bestimmter DNS-Details, z. B. CNAME-Einträge, zur DNS-Verwaltungsseite Ihres Domainhosts.

Folgen Sie der Anleitung Ihres Anbieters, um Ihre Absenderidentität zu bestätigen, bevor Sie mit der Anwendungskonfiguration fortfahren.

So fügen Sie Ihrem Domainhost DNS-Einträge hinzu:

  1. Melden Sie sich beim Dienst Ihres DNS-Anbieters an.
  2. Rufen Sie die Seite zur DNS-Verwaltung für Ihre Domain auf.
  3. Fügen Sie die CNAME-Einträge genau so hinzu, wie sie von Ihrem E‑Mail-Dienstanbieter angegeben wurden. Führen Sie für jeden Eintrag die folgenden Schritte aus:

    • 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 noch einmal.

Quelldateien konfigurieren

So fügen Sie die SMTP-Funktionalität hinzu:

  1. Fügen Sie Ihrer Datei requirements.txt die folgende Python SDK-Version hinzu:

    appengine-python-standard==2.0.0
    
  2. Fügen Sie der Datei app.yaml 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.net oder example.mailjet.com.
    • SMTP_USER: Der SMTP-Anmeldenutzername Ihres Kontos. Beispiel: apiKey.
    • SMTP_PASSWORD: Das Passwort oder der API-Schlüssel, den Sie von Ihrem E‑Mail-Drittanbieter erhalten haben. Aus Sicherheitsgründen empfehlen wir, den API-Schlüssel mit Secret Manager zu speichern, anstatt ihn in die app.yaml Datei einzufügen.
    • Wenn Sie die Funktion send_mail_to_admins() nicht verwenden, lassen Sie die Einstellung APPENGINE_ADMIN_EMAIL_RECIPIENTS weg.
  3. 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:

  1. Lösen Sie den Teil Ihrer Anwendung aus, der eine E‑Mail sendet.
  2. Prüfen Sie im Logs Explorer, ob Fehler im Zusammenhang mit den API-Aufrufen oder dem SMTP-Verbindungsversuch aufgetreten sind.
  3. 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 Zustellungsstatus Processed, Delivered oder ähnlich angezeigt werden.

Nächste Schritte