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.

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. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

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. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

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. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

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.