E-Mails mit SendGrid senden


In dieser Anleitung wird gezeigt, wie Sie mit SendGrid eine E-Mail von einer Anwendung senden, die auf einer Compute Engine-VM-Instanz ausgeführt wird.

Ziele

  • SendGrid mit Postfix auf einer Compute Engine-Instanz verwenden
  • SendGrid in Java-Code verwenden, der auf einer Compute Engine-Instanz ausgeführt wird
  • SendGrid in Node.js-Code verwenden, der auf einer Compute Engine-Instanz ausgeführt wird
  • SendGrid mit einem Microsoft Exchange Edge-Transport-Server auf einer Compute Engine-Instanz verwenden

Weitere Informationen zum Einrichten von SendGrid finden Sie in der SendGrid-Entwicklerdokumentation.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

  • Compute Engine

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.

    Zur Seite „Instanz erstellen“

  7. Geben Sie für Name den Wert sendgrid-tutorial an.
  8. Klicken Sie im Abschnitt Bootlaufwerk auf Ändern, um mit der Konfiguration des Bootlaufwerks zu beginnen.
  9. Wählen Sie auf dem Public images Tab a Debian or CentOS image version aus.
  10. Klicken Sie auf Auswählen.
  11. Klicken Sie auf Erstellen, um die VM zu erstellen.
  12. Registrieren Sie sich im Google Cloud Marketplace für den SendGrid-E-Mail-Dienst. Halten Sie die SendGrid-SMTP-Kontoanmeldedaten fest, die Nutzername, Passwort und Hostname umfassen. Der SMTP-Nutzername und das SMTP-Passwort sind mit den bei der Registrierung für den Dienst angegebenen Daten identisch. Der SendGrid-Hostname ist smtp.sendgrid.net.
  13. Erstellen Sie einen API-Schlüssel:
    1. Melden Sie sich bei SendGrid an und rufen Sie Einstellungen > API-Schlüssel auf.
    2. Erstellen Sie einen API-Schlüssel.
    3. Wählen Sie die Berechtigungen für den Schlüssel aus. Der Schlüssel muss mindestens die Berechtigungen E-Mails senden zum Senden von E-Mails haben.
    4. Klicken Sie auf Save (Speichern), um den Schlüssel zu erstellen.
    5. SendGrid generiert einen neuen Schlüssel. Dies ist die einzige Kopie des Schlüssels. Kopieren Sie den Schlüssel daher und speichern Sie ihn für später.

E-Mails von Ihrer Instanz mit Postfix senden

Führen Sie die folgenden Schritte aus, um eine Verbindung zu Ihrer SendGrid-Anleitung-Instanz herzustellen und SendGrid mit Postfix auszuführen.

SSH-Verbindung zur Instanz "sendgrid-tutorial" herstellen

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.

SendGrid als SMTP-Relay mit Postfix konfigurieren

Führen Sie in Ihrem SSH-Terminal die folgenden Befehle aus, um SendGrid als SMTP-Relay mit Postfix zu verwenden.

  1. Superuser werden:

    sudo su -
    
  2. Sichere Demaskierung festlegen:

    umask 077
    
  3. Postfix Mail Transport Agent installieren:

    Debian

    apt update && apt -y install postfix libsasl2-modules

    CentOS

    yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y

    Wenn Sie dazu aufgefordert werden, wählen Sie die Konfiguration Nur lokal aus und bestätigen den Standard-Domainnamen.

  4. Ändern Sie die Postfix-Konfigurationsoptionen. Öffnen Sie /etc/postfix/main.cf zum Bearbeiten. Geben Sie beispielsweise zur Verwendung des nano-Texteditors den folgenden Befehl ein:

    nano /etc/postfix/main.cf
    
  5. Aktualisieren Sie die Datei:

    1. Entfernen Sie die Kommentarzeichen bei folgenden Zeilen:

      # default_transport = error
      # relay_transport = error
      
    2. Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:

      relayhost = [smtp.sendgrid.net]:2525
      smtp_tls_security_level = encrypt
      smtp_sasl_auth_enable = yes
      smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
      header_size_limit = 4096000
      smtp_sasl_security_options = noanonymous
      

      Die obigen Zeilen erzwingen die SSL/TLS-Unterstützung und konfigurieren die SMTP-Authentifizierung für solche Anfragen. Die Authentifizierung in der Postfix-Konfiguration wird von einem SASL-Modul (Simple Authentication and Security Layer) verarbeitet.

  6. Speichern und schließen Sie die Datei.

  7. Generieren Sie die SASL-Passwortzuordnung mit dem API-Schlüssel, den Sie im Abschnitt Vorbereitung erstellt haben. Ersetzen Sie your-api-key durch den generierten API-Schlüssel.

    echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
  8. Verwenden Sie das Dienstprogramm postmap zur Generierung einer .db-Datei:

    postmap /etc/postfix/sasl_passwd
    
  9. Prüfen Sie, ob Sie eine .db-Datei haben:

    ls -l /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd.db
    
  10. Entfernen Sie die Datei mit Ihren Anmeldedaten, da sie nicht mehr benötigt wird:

    rm /etc/postfix/sasl_passwd
    
  11. Legen Sie die Berechtigungen für die .db-Datei fest und überprüfen Sie, ob die andere Datei entfernt wurde:

    chmod 600 /etc/postfix/sasl_passwd.db
    ls -la /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd.db
    
  12. Laden Sie die Konfiguration neu, um die geänderten Parameter zu laden:

    Debian

    /etc/init.d/postfix restart
    

    CentOS

    postfix reload
    

  13. Installieren Sie das mailutils- oder mailx-Paket:

    Debian

    apt -y install mailutils

    CentOS

    yum install mailx -y
    

  14. Senden Sie eine Test-E-Mail:

    echo 'message' | mail -s subject email@example.com

    Ersetzen Sie Folgendes:

    • message: Der Text der E-Mail.
    • subject: Der Betreff der E-Mail.
    • email@example.com: Die E-Mail-Adresse, an die Sie eine Nachricht senden möchten.

    Suchen Sie in den Systemlogs nach einer Statuszeile, die status und den Code für eine erfolgreiche Serverantwort (250) enthält.

    Debian

    tail -n 5 /var/log/syslog
    

    CentOS

    tail -n 5 /var/log/maillog
    

E-Mails mit Java auf der Instanz senden

SSH-Verbindung zur Instanz "sendgrid-tutorial" herstellen

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.

E-Mail-Nachricht verfassen und senden

In der folgenden Anleitung wird die SendGrid-Java-Clientbibliothek zum Verfassen und Senden einer E-Mail-Nachricht über SendGrid verwendet. Das vollständige Beispiel können Sie sich auf GitHub ansehen.

Gehen Sie im SSH-Terminal folgendermaßen vor:

  1. Werden Sie Superuser und legen Sie mit umask einen sicheren Zugriff fest:

    sudo su -
    umask 077
    
  2. Installieren Sie Java und Maven:

    apt -y update && apt -y install git-core openjdk-11-jdk maven
    
  3. Klonen Sie das GitHub-Repository:

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    
  4. Gehen Sie zum Hauptquellcode für das Beispiel:

    cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
    
  5. Öffnen Sie SendEmailServelet.java zum Bearbeiten.

    • Ersetzen Sie your-sendgrid-api-key durch den API-Schlüssel für das SendGrid-Konto.

    • Ersetzen Sie your-sendgrid-from-email durch die E-Mail-Adresse, von der Sie E-Mails senden möchten.

    • Ersetzen Sie destination-email durch die E-Mail-Adresse, an die Sie E-Mails senden möchten.

  6. Gehen Sie zum Stammverzeichnis des Beispielcodes:

    cd /root/java-docs-samples/compute/sendgrid
    
  7. Verpacken Sie die Java-Klasse:

    mvn clean package
    
  8. Wechseln Sie zum neuen target-Verzeichnis:

    cd target
    
  9. Legen Sie Berechtigungen fest, mit denen Sie die JAR-Datei ausführen können:

    chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
    
  10. Führen Sie die Auswahl für alternative Java-Versionen aus:

    update-alternatives --config java
    

    Wählen Sie die Option java-11-openjdk-amd64 aus.

  11. Führen Sie die Java-Datei aus:

    java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
    

E-Mails mit Node.js auf der Instanz senden

Wenn Sie dieses Beispiel ausführen möchten, muss Node.js ab Version 7.6 auf der VM-Instanz installiert sein.

SSH-Verbindung zur Instanz "sendgrid-tutorial" herstellen

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.

E-Mail-Nachricht verfassen und senden

Gehen Sie im SSH-Terminal folgendermaßen vor:

  1. Werden Sie Superuser und legen Sie mit umask einen sicheren Zugriff fest:

    sudo su -
    umask 077
    
  2. Aktualisieren Sie die Paket-Repositorys:

    Debian

    apt update
    

    CentOS

    yum update -y
    

  3. Installieren Sie Node.js-Abhängigkeiten:

    Debian

    apt -y install git-core curl build-essential openssl libssl-dev
    

    CentOS

    yum install git-core curl openssl openssl-devel -y
    yum groupinstall "Development Tools" -y
    

  4. Installieren Sie Node.js. Standardmäßig wird bei der Installation auch npm installiert:

    Debian

    curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
    sudo apt -y install nodejs
    

    CentOS

    curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
    

    Installieren Sie dann Node.js:

    yum -y install nodejs
    

  5. Installieren Sie den SendGrid-Node.js-Client:

    npm install sendgrid
    
  6. Klonen Sie das Beispiel-Repository:

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  7. Gehen Sie zu dem Verzeichnis, das das SendGrid-Beispiel enthält:

    cd nodejs-docs-samples/compute
    
  8. Kopieren Sie die Datei sendgrid.js:

    cp sendgrid.js sendmail.js
    
  9. Öffnen Sie sendmail.js zum Bearbeiten.

    • Ersetzen Sie your-sendgrid-api-key durch den API-Schlüssel für das SendGrid-Konto.

    • Ersetzen Sie from-email@example.com durch die E-Mail-Adresse, von der aus Sie E-Mails senden möchten.

    • Ersetzen Sie to-email@example.com durch die E-Mail-Adresse, an die Sie E-Mails senden möchten.

    // This sample is based off of:
    // https://github.com/sendgrid/sendgrid-nodejs/tree/master/packages/mail
    const sendgrid = require('@sendgrid/mail');
    sendgrid.setApiKey(process.env.SENDGRID_API_KEY || '<your-sendgrid-api-key>');
    
    async function sendgridExample() {
      await sendgrid.send({
        to: 'to_email@example.com',
        from: 'from_email@example.com',
        subject: 'Sendgrid test email from Node.js on Google Cloud Platform',
        text: 'Well hello! This is a Sendgrid test email from Node.js on Google Cloud Platform.',
      });
    }
    sendgridExample();

  10. Führen Sie das Programm aus, um über SendGrid eine E-Mail-Nachricht zu senden:

    node sendmail.js
    

E-Mails von einem Exchange-Edge-Transport-Server senden

Sie können Microsoft Exchange so einrichten, dass ausgehende E-Mails mit SendGrid gesendet werden. Dazu konfigurieren Sie einen Connector für ausgehende Nachrichten. Weitere Informationen finden Sie unter Microsoft Exchange Server 2016 in Compute Engine bereitstellen.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

So löschen Sie das Projekt:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Compute Engine-Instanz löschen

So löschen Sie eine Compute Engine-Instanz:

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie auf das Kästchen für die Instanz sendgrid-tutorial.
  3. Klicken Sie zum Löschen der Instanz auf Weitere Aktionen, dann auf Löschen, und folgen Sie dann der Anleitung.

Nächste Schritte

Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center