Von der App Engine Mail API 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, 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:

  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-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.netoder example.mailjet.com.

  • Port: Die Portnummer für die Verbindung. Zum Beispiel 587 fü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 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. 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:

  1. Melden Sie sich beim Dienst Ihres DNS-Anbieters an.
  2. Rufen Sie die Seite für die 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. 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:

  1. Führen Sie den folgenden Befehl aus, um Maven zu installieren:

    sudo apt install maven
    
  2. Fügen Sie in Ihrer pom.xml-Datei den folgenden Code hinzu, um zum SMTP-Dienst zu wechseln:

    1. Fügen Sie die Version für die appengine-api-1.0-sdk-Abhängigkeit hinzu:

       <dependency>
         <groupId>com.google.appengine</groupId>
         <artifactId>appengine-api-1.0-sdk</artifactId>
         <version>2.0.38</version>
       </dependency>
      
    2. Aktualisieren Sie Ihre Projekt-ID:

        <configuration>
          <deploy.projectId>PROJECT-ID</deploy.projectId>
          <deploy.version>1</deploy.version>
        </configuration>
      

      Ersetzen Sie dabei PROJECT-ID durch die ID Ihres Projekts in Google Cloud .

  3. Fügen Sie die folgenden Umgebungsvariablen in Ihre appengine-web.xml-Datei ein, um Ihre SMTP-Absenderkonfigurationen einzuschließen:

    ...
    <runtime>RUNTIME</runtime>
    <service>default</service>
    <threadsafe>true</threadsafe>
    <app-engine-apis>true</app-engine-apis>
    <env-variables>
    <!-- This is the master switch to enable the SMTP service.-->
    <env-var name="APPENGINE_USE_SMTP_MAIL_SERVICE" value="true" />
    <!-- SMTP Server Configuration -->
    <!-- The server address from your mail provider.-->
    <env-var name="APPENGINE_SMTP_HOST" value="SMTP_HOST" />
    <!-- The recommended port for TLS connections. -->
    <env-var name="APPENGINE_SMTP_PORT" value="587" />
    <!-- The username for your SMTP login. -->
    <env-var name="APPENGINE_SMTP_USER" value="SMTP_USER" />
    <!-- The API key or password -->
    <env-var name="APPENGINE_SMTP_PASSWORD" value="SMTP_PASSWORD" />
    <!--  Use TLS for a secure connection. -->
    <env-var name="APPENGINE_SMTP_USE_TLS" value="true" />
    </env-variables>
    ...
    </appengine-web-app>
    

    Ersetzen Sie Folgendes:

    • RUNTIME: Eine unterstützte Java-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 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 appengine-web.xml zu platzieren.
  4. Führen Sie den folgenden Befehl aus, um die Anwendung bereitzustellen:

    mvn package appengine: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 Log-Explorer, ob Fehler im Zusammenhang mit den API-Aufrufen oder dem SMTP-Verbindungsversuch vorliegen.
  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 Zustellstatus Processed, Delivered oder ähnlich angezeigt werden.

Nächste Schritte