E-Mails mit Mailjet senden

Mailjet ist ein globaler E-Mail-Dienst eines Drittanbieters, der Google Compute Engine-Nutzern eine kostenlose Stufe mit 6.000 E-Mails pro Monat bietet. Außerdem bietet Mailjet Folgendes:

  • Eine API, eine Benutzeroberfläche und ein SMTP-Relay für Transaktions- und Marketing-E-Mails
  • Compliance mit europäischen Datenschutzrichtlinien
  • E-Mail- und Zustellbarkeitsfunktionen, wie etwa anpassbare Prioritätseinstellungen und automatisierte Drosselungsverwaltung
  • API-Ressourcenbibliothek in Go, PHP, Node.js, Java, Python, Ruby zur Verwaltung von Unterkonten, Authentifizierung, Kontakten, Kampagnen, benutzerdefinierten Nutzlasten, Statistiken, Echtzeitereignissen und Parsing über die Event API
  • Integriertes MJML-Framework zum Erstellen responsiver HTML-E-Mail-Vorlagen
  • Rund um die Uhr Support in mehr als vier Sprachen
  • Möglichkeit, E-Mails von anderen Domains als gmail.com zu senden

Vorbereitung

  1. Erstellen Sie ein neues Mailjet-Konto auf der Google-Partnerseite von Mailjet*. Geben Sie bei der Registrierung die Domain und die E-Mail-Adresse an, von der Sie E-Mail-Nachrichten senden möchten.

  2. Fordern Sie die Anmeldedaten für das Mailjet-SMTP-Konto an.

Folgen Sie als Nächstes unten einigen der Beispiele, um die E-Mail-Konfiguration einzurichten. Eine umfassende Beschreibung anderer E-Mail-Lösungen, einschließlich Beispielen zur Integration in die gebräuchlichsten SMTP-Server, Bibliotheken und Frameworks, finden Sie in der Mailjet-Dokumentation.

Relay mit Postfix konfigurieren

Wenn Sie Mailjet als E-Mail-Relay konfigurieren, kann Postfix E-Mails weiterleiten, die für die Remote-Übermittlung bestimmt sind.

  1. Stellen Sie eine SSH-Verbindung zur Instanz her:

    gcloud compute ssh INSTANCE
    
  2. Installieren Sie den Postfix Mail Transport Agent. Akzeptieren Sie die Standardauswahl für Domainnamen, wenn Sie dazu aufgefordert werden, aber wählen Sie die Konfiguration Local Only aus.

    Debian


    user@test-instance:~# sudo apt-get update && sudo apt-get install postfix libsasl2-modules -y
    

    CentOS


    user@test-instance:~# sudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
    

  3. Ändern Sie die Postfix-Konfigurationsoptionen. Postfix-Konfigurationsoptionen werden in der Datei main.cf festgelegt. Öffnen Sie die Datei mit einem beliebigen Texteditor:

    user@test-instance:~# sudo vi /etc/postfix/main.cf
    
  4. Kommentieren Sie gegebenenfalls die folgenden Zeilen aus.

    # default_transport = error
    # relay_transport = error
    
  5. Fügen Sie den Mailjet-SMTP-Dienst hinzu, indem Sie am Ende der Datei die folgende Zeile einfügen:

    relayhost = in.mailjet.com:2525
    
  6. Fügen Sie als Nächstes die folgenden Zeilen hinzu, um die SSL/TLS-Unterstützung zu erzwingen und die SMTP-Authentifizierung für diese Anfragen zu konfigurieren. Die Authentifizierung in der Postfix-Konfiguration wird von einem SASL-Modul (Simple Authentication and Security Layer) verarbeitet. Fügen Sie diese Zeilen am Ende der Datei hinzu:

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    

    Speichern Sie die Änderungen und schließen Sie die Datei.

  7. Erstellen Sie die SASL-Passwortzuordnung mit einem Texteditor Ihrer Wahl:

    user@test-instance:~# sudo vi /etc/postfix/sasl_passwd
    
  8. Fügen Sie die folgenden Zeilen zu der Datei sasl_passwd hinzu, um die Anmeldedaten für Mailjet bereitzustellen:

    in.mailjet.com:2525 YOUR_SMTP_KEY:YOUR_SMTP_SECRET
    
  9. Generieren Sie mithilfe des postmap-Dienstprogramms eine .db-Datei:

    user@test-instance:~# sudo postmap /etc/postfix/sasl_passwd
    user@test-instance:~# sudo ls -l /etc/postfix/sasl_passwd*
    -rw------- 1 root root    68 Jun  1 10:50 /etc/postfix/sasl_passwd
    -rw------- 1 root root 12288 Jun  1 10:51 /etc/postfix/sasl_passwd.db
    
  10. Entfernen Sie als Nächstes die Datei, die Ihre Anmeldedaten enthält, da sie nicht mehr benötigt wird:

    user@test-instance:~# sudo rm /etc/postfix/sasl_passwd
    
  11. Legen Sie die Berechtigungen für die .db-Datei fest:

    user@test-instance:~# sudo chmod 600 /etc/postfix/sasl_passwd.db
    user@test-instance:~# sudo ls -la /etc/postfix/sasl_passwd.db
    -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
    
  12. Laden Sie die Konfiguration zum Schluss neu, um die geänderten Parameter zu laden:

    Debian


    user@test-wheezy:~# sudo /etc/init.d/postfix restart
    

    CentOS


    [user@test-centos ~]# sudo postfix reload
    

  13. Testen Sie die Konfiguration. Installieren Sie das Paket mailx oder mailutils und testen Sie die Konfiguration.

    Debian


    user@test-wheezy:~# sudo apt-get install mailutils -y
    

    CentOS


    [user@test-centos ~]# sudo yum install mailx -y
    

    Senden Sie eine Testnachricht:

     user@test-instance:~# echo 'Test passed.' | mail -s Test-Email EMAIL@EXAMPLE.COM
    

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

    Debian


    user@test-wheezy:~# sudo tail -n 5 /var/log/syslog
    

    CentOS


    [user@test-centos ~]# sudo tail -n 5 /var/log/maillog
    

Wenn bei der Einrichtung von Postfix mit Mailjet Probleme auftreten, sehen Sie in der Anleitung zur Einrichtung von Mailjet Postfix nach.

E-Mails mit Java senden

Debian
  1. Stellen Sie eine SSH-Verbindung zur Instanz her:
    gcloud compute ssh [INSTANCE_NAME]
  2. Aktualisieren Sie die Paket-Repositorys und installieren Sie die erforderlichen Pakete:
    user@test-instance:~# sudo apt-get update && sudo apt-get install git-core openjdk-8-jdk maven
  3. Klonen Sie das Java-Repository von GitHub:
    user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Gehen Sie zum Hauptquellcode für das Beispiel unter folgendem Pfad:
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Konfigurieren Sie die Mailjet-Einstellungen und ersetzen dabei die folgenden Variablen:

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        MailjetClient client = new MailjetClient(
            mailjetApiKey, mailjetSecretKey, new ClientOptions("v3.1"));
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
            throws MailjetException, MailjetSocketTimeoutException {
        MailjetRequest email = new MailjetRequest(Emailv31.resource)
            .property(Emailv31.MESSAGES, new JSONArray()
            .put(new JSONObject()
              .put(Emailv31.Message.FROM, new JSONObject()
                .put("Email", sender)
                .put("Name", "pandora"))
              .put(Emailv31.Message.TO, new JSONArray()
                .put(new JSONObject()
                  .put("Email", recipient)))
              .put(Emailv31.Message.SUBJECT, "Your email flight plan!")
              .put(Emailv31.Message.TEXTPART,
                  "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
              .put(Emailv31.Message.HTMLPART,
                  "<h3>Dear passenger, welcome to Mailjet!</h3>"
                  + "<br />May the delivery force be with you!")));
    
        try {
          // trigger the API call
          MailjetResponse response = client.post(email);
          // Read the response data and status
          System.out.println(response.getStatus());
          System.out.println(response.getData());
          return response;
        } catch (MailjetException e) {
          System.out.println("Mailjet Exception: " + e);
          return null;
        }
      }
    }
  6. Verwenden Sie im mailjet-Verzeichnis Maven, um die Klasse als JAR-Datei zu verpacken:
    user@test-instance:~# mvn clean package
  7. Stellen Sie sicher, dass Sie OpenJDK 8 verwenden:
    user@test-instance:~# sudo update-alternatives --config java
  8. Um eine E-Mail zu senden, führen Sie im Zielverzeichnis die JAR-Datei mit den Empfänger- und Absender-E-Mail-Adressen als Argumente aus:
    user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]
CentOS
  1. Stellen Sie eine SSH-Verbindung zur Instanz her:
    gcloud compute ssh [INSTANCE_NAME]
  2. Aktualisieren Sie die Paket-Repositorys und installieren Sie die erforderlichen Pakete:
    user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
  3. Klonen Sie das Java-Repository von GitHub:
    user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Gehen Sie zum Hauptquellcode für das Beispiel unter folgendem Pfad:
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Konfigurieren Sie die Mailjet-Einstellungen und ersetzen dabei die folgenden Variablen:

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        MailjetClient client = new MailjetClient(
            mailjetApiKey, mailjetSecretKey, new ClientOptions("v3.1"));
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
            throws MailjetException, MailjetSocketTimeoutException {
        MailjetRequest email = new MailjetRequest(Emailv31.resource)
            .property(Emailv31.MESSAGES, new JSONArray()
            .put(new JSONObject()
              .put(Emailv31.Message.FROM, new JSONObject()
                .put("Email", sender)
                .put("Name", "pandora"))
              .put(Emailv31.Message.TO, new JSONArray()
                .put(new JSONObject()
                  .put("Email", recipient)))
              .put(Emailv31.Message.SUBJECT, "Your email flight plan!")
              .put(Emailv31.Message.TEXTPART,
                  "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
              .put(Emailv31.Message.HTMLPART,
                  "<h3>Dear passenger, welcome to Mailjet!</h3>"
                  + "<br />May the delivery force be with you!")));
    
        try {
          // trigger the API call
          MailjetResponse response = client.post(email);
          // Read the response data and status
          System.out.println(response.getStatus());
          System.out.println(response.getData());
          return response;
        } catch (MailjetException e) {
          System.out.println("Mailjet Exception: " + e);
          return null;
        }
      }
    }
  6. Verwenden Sie im mailjet-Verzeichnis Maven, um die Klasse als JAR-Datei zu verpacken:
    user@test-centos:~# mvn clean package
  7. Stellen Sie sicher, dass Sie OpenJDK 8 verwenden:
    user@test-centos:~# sudo alternatives --config java
  8. Um eine E-Mail zu senden, führen Sie im Zielverzeichnis die JAR-Datei mit den Empfänger- und Absender-E-Mail-Adressen als Argumente aus:
    user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]

E-Mails mit Node.js senden

In der folgenden Anleitung wird beschrieben, wie Sie Mailjet mit Node.js unter Debian Wheezy verwenden.

Debian
  1. Stellen Sie eine SSH-Verbindung zur Instanz her:
    gcloud compute ssh [INSTANCE_NAME]
  2. Aktualisieren Sie die Paket-Repositorys:
    user@test-wheezy:~# sudo apt-get update
  3. Installieren Sie Node.js-Abhängigkeiten:
    user@test-wheezy:~# sudo apt-get install git-core curl build-essential openssl libssl-dev -y
  4. Klonen Sie das Node.js-Repository von GitHub:
    user@test-wheezy:~# git clone https://github.com/nodejs/node
  5. Ändern Sie das Verzeichnis in die Node.js-Quellstruktur:
    user@test-wheezy:~# cd node
  6. Konfigurieren Sie die Knotensoftware für dieses Betriebssystem und diese virtuelle Maschine:
    user@test-wheezy:~# ./configure
  7. Erstellen Sie Node.js-, npm- und zugehörige Objekte:
    user@test-wheezy:~# sudo make

    Dies kann einige Minuten dauern.

  8. Installieren Sie Node.js, npm und weitere Software am Standardspeicherort:
    user@test-wheezy:~# sudo make install
  9. Installieren Sie das Mailer-Paket:
    user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
  10. Erstellen Sie im Verzeichnis node eine neue Datei mit dem Namen sendmail.js, die folgenden JavaScript-Code enthält:
    const mailer = require('nodemailer');
    const smtp = require('nodemailer-smtp-transport');
    
    async function mailjet() {
      const transport = mailer.createTransport(
        smtp({
          host: 'in.mailjet.com',
          port: 2525,
          auth: {
            user: process.env.MAILJET_API_KEY || '<your-mailjet-api-key',
            pass: process.env.MAILJET_API_SECRET || '<your-mailjet-api-secret>',
          },
        })
      );
    
      const json = await transport.sendMail({
        from: 'ANOTHER_EMAIL@ANOTHER_EXAMPLE.COM', // From address
        to: 'EMAIL@EXAMPLE.COM', // To address
        subject: 'test email from Node.js on Google Cloud Platform', // Subject
        text: 'Hello!\n\nThis a test email from Node.js.', // Content
      });
      console.log(json);
    }
  11. Führen Sie das Programm aus, um über Mailjet eine E-Mail-Nachricht zu senden:
    user@test-wheezy:~# node sendmail.js
CentOS
  1. Stellen Sie eine SSH-Verbindung zur Instanz her:
    gcloud compute ssh [INSTANCE_NAME]
  2. Aktualisieren Sie die Paket-Repositorys:
    user@test-centos:~# sudo yum update -y
  3. Installieren Sie Node.js-Abhängigkeiten:
    user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y
    ...
    user@test-centos:~# sudo yum groupinstall "Development Tools" -y
    ...
  4. Klonen Sie das Node.js-Repository von GitHub:
    user@test-centos:~# git clone https://github.com/nodejs/node
  5. Ändern Sie das Verzeichnis in die Node.js-Quellstruktur:
    user@test-centos:~# cd node
  6. Konfigurieren Sie die Knotensoftware für dieses Betriebssystem und diese virtuelle Maschine:
    user@test-centos:~# ./configure
  7. Erstellen Sie Node.js-, npm- und zugehörige Objekte:
    user@test-centos:~# sudo make

    Dies kann einige Minuten dauern.

  8. Installieren Sie Node.js, npm und weitere Software am Standardspeicherort:
    user@test-centos:~# sudo make install
  9. Installieren Sie das Mailer-Paket:
    user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
  10. Erstellen Sie im Verzeichnis node eine neue Datei mit dem Namen sendmail.js, die folgenden JavaScript-Code enthält:
    const mailer = require('nodemailer');
    const smtp = require('nodemailer-smtp-transport');
    
    async function mailjet() {
      const transport = mailer.createTransport(
        smtp({
          host: 'in.mailjet.com',
          port: 2525,
          auth: {
            user: process.env.MAILJET_API_KEY || '<your-mailjet-api-key',
            pass: process.env.MAILJET_API_SECRET || '<your-mailjet-api-secret>',
          },
        })
      );
    
      const json = await transport.sendMail({
        from: 'ANOTHER_EMAIL@ANOTHER_EXAMPLE.COM', // From address
        to: 'EMAIL@EXAMPLE.COM', // To address
        subject: 'test email from Node.js on Google Cloud Platform', // Subject
        text: 'Hello!\n\nThis a test email from Node.js.', // Content
      });
      console.log(json);
    }
  11. Führen Sie das Programm aus, um über Mailjet eine E-Mail-Nachricht zu senden:
    user@test-centos:~# node sendmail.js

Mailjet-SMTP-Einstellungen

Dies ist eine Kurzreferenz für Mailjet-spezifische SMTP-Einstellungen, die zur Konfiguration von Clients verwendet werden:

  • Host: in.mailjet.com
  • Port: 2525

* Google erhält eine Vergütung für Kunden, die sich für ein kostenpflichtiges Konto registrieren.

Probieren Sie weitere Google Cloud Platform-Funktionen aus. Anleitungen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation