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
  • Die Möglichkeit, E-Mails von anderen Domains als gmail.com zu senden

In diesem Dokument wird beschrieben, wie Sie eine VM-Instanz zum Senden von E-Mails über Mailjet mit den folgenden Methoden konfigurieren:

Eine umfassende Beschreibung anderer E-Mail-Lösungen, einschließlich Beispielen zur Einbindung in gängige SMTP-Server, Bibliotheken und Frameworks, finden Sie in der Mailjet-Dokumentation.

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.

  3. Achten Sie darauf, dass die E-Mail-Adresse, über die Sie E-Mails versenden möchten, von Mailgun validiert wurde.

  4. Richten Sie eine Firewallregel ein, um den TCP-Traffic an Port 2525 zuzulassen.

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

Mailjet als SMTP-Relay konfigurieren

Wenn Sie Mailjet als E-Mail-Relais konfigurieren, können Sie E-Mails zur Remote-Übermittlung an Mailjet weiterleiten.

Postfix

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

    gcloud compute ssh [INSTANCE_NAME]
    

    Dabei ist [INSTANCE_NAME] der Name der Instanz, über die Sie E-Mails senden möchten.

  2. Installieren Sie den Postfix Mail Transport Agent auf der VM-Instanz. Übernehmen Sie bei Aufforderung die Standardauswahl für Domainnamen, aber wählen Sie die Konfiguration Local Only aus.

    Debian


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

    CentOS


    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:

    sudo vi /etc/postfix/main.cf
    
  4. 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 = in.mailjet.com:2525
      smtp_tls_security_level = encrypt
      smtp_sasl_auth_enable = yes
      smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
      smtp_sasl_security_options = noanonymous
      

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

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

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

    sudo vi /etc/postfix/sasl_passwd
    
  6. Fügen Sie die folgenden Zeilen zu der Datei sasl_passwd hinzu, um die Anmeldedaten für Mailjet bereitzustellen:

    in.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
    
  7. Generieren Sie mithilfe des postmap-Dienstprogramms eine .db-Datei:

    sudo postmap /etc/postfix/sasl_passwd
    sudo ls -l /etc/postfix/sasl_passwd*
    

    Sie sollten die folgende Antwort erhalten:

    -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
    
  8. Entfernen Sie als Nächstes die Datei, die Ihre Anmeldedaten enthält, da sie nicht mehr benötigt wird:

    sudo rm /etc/postfix/sasl_passwd
    
  9. Legen Sie die Berechtigungen für die .db-Datei fest:

    sudo chmod 600 /etc/postfix/sasl_passwd.db
    sudo ls -la /etc/postfix/sasl_passwd.db
    
  10. Laden Sie die Konfiguration zum Schluss neu, um die geänderten Parameter zu laden:

    Debian


    sudo /etc/init.d/postfix restart
    

    CentOS


    sudo postfix reload
    

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

    Debian


    sudo apt-get install mailutils -y
    

    CentOS


    sudo yum install mailx -y
    

    Senden Sie eine Testnachricht:

    echo 'Test passed.' | mail -s 'Test-Email' -aFrom:[FROM_EMAIL] [DESTINATION_EMAIL]
    

    Dabei gilt:

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

    Debian


    sudo tail -n 5 /var/log/syslog
    

    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.

Nodemailer

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);
    }
    mailjet();
  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);
    }
    mailjet();
  11. Führen Sie das Programm aus, um über Mailjet eine E-Mail-Nachricht zu senden:
    user@test-centos:~# node sendmail.js

E-Mails über die Mailjet API mit Java senden

Weitere Beispiele zur Verwendung der Mailjet API finden Sie in der offiziellen Mailjet-Dokumentation.

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]

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

Weitere Google Cloud Platform-Features testen: Anleitungen

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

Feedback geben zu...

Compute Engine-Dokumentation