Envoyer des e-mails avec Mailjet

Mailjet est un service de messagerie tiers à l'échelle mondiale, dont l'offre gratuite permet aux utilisateurs de Google Compute Engine d'envoyer 6 000 e-mails par mois. Mailjet propose également :

  • une API, une interface utilisateur et un relais SMTP permettant d'envoyer des e-mails transactionnels et marketing ;
  • la conformité aux règles européennes en matière de confidentialité des données ;
  • des fonctionnalités de messagerie et de délivrabilité, telles que les paramètres de priorité personnalisables et la gestion automatisée de la fréquence d'envoi ;
  • une bibliothèque de ressources d'API dans les langages Go, PHP, Node.js, Java, Python et Ruby, afin de gérer les sous-comptes, l'authentification, les contacts, les campagnes, les charges utiles personnalisées, les statistiques, les événements en temps réel et les analyses via l'API Event ;
  • un framework MJML intégré permettant de créer des modèles d'e-mail HTML réactifs ;
  • une assistance qui suit les fuseaux horaires (24h/24 et 7j/7), disponible dans plus de quatre langues ;
  • la possibilité d'envoyer des e-mails à partir d'autres domaines que gmail.com.

Ce document explique comment configurer votre instance de VM pour l'envoi d'e-mails via Mailjet à l'aide des méthodes suivantes :

  • Via un relais SMTP avec :
  • Directement via l'API Mailjet si vous utilisez Java

Pour obtenir une documentation complète sur d'autres solutions de messagerie, comme des exemples d'intégration aux bibliothèques, frameworks et serveurs SMTP les plus courants, consultez la documentation de Mailjet.

Avant de commencer

  1. Créez un compte Mailjet sur la page des partenaires Google de Mailjet*. Lors de l'inscription, indiquez le domaine et l'adresse e-mail à partir desquels vous souhaitez envoyer des e-mails.

  2. Obtenez vos identifiants de compte SMTP Mailjet.

  3. Assurez-vous que l'adresse e-mail à partir de laquelle vous voulez envoyer des e-mails a été validée par Mailgun.

  4. Configurez une règle de pare-feu pour autoriser le trafic TCP sur le port 2525.

* Google sera rémunéré pour les clients créant un compte payant.

Configurer Mailjet en tant que relais SMTP

Si vous configurez Mailjet en tant que relais de messagerie, vous pouvez lui transférer des e-mails pour qu'il les distribue à distance.

Avec Postfix

  1. Connectez-vous à votre instance via SSH :

    gcloud compute ssh [INSTANCE_NAME]
    

    [INSTANCE_NAME] est le nom de l'instance à partir de laquelle vous souhaitez envoyer des e-mails.

  2. Sur l'instance de VM, installez l'agent de transport de messages Postfix. Lorsque vous y êtes invité, acceptez les choix par défaut en matière de noms de domaine, mais sélectionnez la configuration Local Only.

    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. Modifiez les options de configuration de Postfix. Elles sont définies dans le fichier main.cf. Ouvrez ce dernier avec l'éditeur de texte de votre choix.

    sudo vi /etc/postfix/main.cf
    
  4. Mettez à jour le fichier :

    1. Passez les lignes suivantes en commentaire :

      # default_transport = error
      # relay_transport = error
      
    2. Ajoutez les lignes suivantes à la fin du fichier :

      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
      

      Ces lignes appliquent la compatibilité des protocoles SSL/TLS et configurent l'authentification SMTP pour ces requêtes. Un module de couche de sécurité et d'authentification simple (SASL, Simple Authentication and Security Layer) gère l'authentification dans la configuration de Postfix.

    3. Enregistrez les modifications et fermez le fichier.

  5. Créez la carte de mot de passe SASL avec l'éditeur de texte de votre choix :

    sudo vi /etc/postfix/sasl_passwd
    
  6. Dans le fichier sasl_passwd, ajoutez les lignes suivantes afin de fournir les identifiants pour Mailjet :

    in.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
    
  7. Avec l'utilitaire postmap, générez un fichier .db :

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

    Vous devez obtenir la réponse suivante :

    -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. Supprimez ensuite le fichier contenant vos identifiants, car il n'est plus nécessaire :

    sudo rm /etc/postfix/sasl_passwd
    
  9. Définissez les autorisations sur le fichier .db :

    sudo chmod 600 /etc/postfix/sasl_passwd.db
    sudo ls -la /etc/postfix/sasl_passwd.db
    
  10. Enfin, rechargez votre configuration pour charger les paramètres modifiés :

    Debian


    sudo /etc/init.d/postfix restart
    

    CentOS


    sudo postfix reload
    

  11. Testez la configuration. Installez le package mailx ou mailutils, puis testez la configuration.

    Debian


    sudo apt-get install mailutils -y
    

    CentOS


    sudo yum install mailx -y
    

    Envoyez un message de test :

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

    où :

    • [FROM_EMAIL] est une adresse e-mail qui a été validée avec Mailgun.
    • [DESTINATION_EMAIL] est l'adresse à laquelle envoyer l'e-mail.

    Dans vos journaux système, recherchez une ligne d'état contenant status et le code de réponse du serveur indiquant le succès de l'opération (250) :

    Debian


    sudo tail -n 5 /var/log/syslog
    

    CentOS


    sudo tail -n 5 /var/log/maillog
    

Si vous rencontrez des problèmes lors de la configuration de Postfix avec Mailjet, consultez les instructions de Mailjet pour la configuration de Postfix.

Avec Nodemailer

Les instructions suivantes décrivent comment utiliser Mailjet avec Node.js sur Debian Wheezy.

Debian
  1. Connectez-vous à votre instance via SSH :
    gcloud compute ssh [INSTANCE_NAME]
  2. Mettez à jour vos dépôts de packages :
    user@test-wheezy:~# sudo apt-get update
  3. Installez les dépendances Node.js :
    user@test-wheezy:~# sudo apt-get install git-core curl build-essential openssl libssl-dev -y
  4. Clonez le dépôt Node.js de GitHub :
    user@test-wheezy:~# git clone https://github.com/nodejs/node
  5. Remplacez le répertoire par l'arborescence source de Node.js :
    user@test-wheezy:~# cd node
  6. Configurez le logiciel de nœud pour ce système d'exploitation et cette machine virtuelle :
    user@test-wheezy:~# ./configure
  7. Compilez Node.js, npm et les objets associés :
    user@test-wheezy:~# sudo make

    Cela peut prendre quelques minutes.

  8. Installez Node.js, npm et les autres logiciels à l'emplacement par défaut :
    user@test-wheezy:~# sudo make install
  9. Installez le package mailer :
    user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
  10. Dans le répertoire node, créez un fichier nommé sendmail.js contenant le JavaScript suivant :
    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. Exécutez le programme pour envoyer un e-mail via Mailjet :
    user@test-wheezy:~# node sendmail.js
CentOS
  1. Connectez-vous à votre instance via SSH :
    gcloud compute ssh [INSTANCE_NAME]
  2. Mettez à jour les dépôts de packages :
    user@test-centos:~# sudo yum update -y
  3. Installez les dépendances Node.js :
    user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y
    ...
    user@test-centos:~# sudo yum groupinstall "Development Tools" -y
    ...
  4. Clonez le dépôt Node.js de GitHub :
    user@test-centos:~# git clone https://github.com/nodejs/node
  5. Remplacez le répertoire par l'arborescence source de Node.js :
    user@test-centos:~# cd node
  6. Configurez le logiciel de nœud pour ce système d'exploitation et cette machine virtuelle :
    user@test-centos:~# ./configure
  7. Compilez Node.js, npm et les objets associés :
    user@test-centos:~# sudo make

    Cela peut prendre quelques minutes.

  8. Installez Node.js, npm et les autres logiciels à l'emplacement par défaut :
    user@test-centos:~# sudo make install
  9. Installez le package mailer :
    user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
  10. Dans le répertoire node, créez un fichier nommé sendmail.js contenant le JavaScript suivant :
    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. Exécutez le programme pour envoyer un e-mail via Mailjet :
    user@test-centos:~# node sendmail.js

Envoyer des e-mails via l'API Mailjet avec Java

Pour consulter plus d'exemples d'utilisation de l'API Mailjet, consultez la documentation officielle de Mailjet.

Debian
  1. Connectez-vous à votre instance via SSH :
    gcloud compute ssh [INSTANCE_NAME]
  2. Mettez à jour vos dépôts de packages et installez les packages requis :
    user@test-instance:~# sudo apt-get update && sudo apt-get install git-core openjdk-8-jdk maven
  3. Clonez le dépôt Java de GitHub :
    user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Accédez au code source principal de l'exemple, situé dans :
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Configurez vos paramètres Mailjet, en remplaçant les variables suivantes :

    • YOUR-MAILJET-API-KEY par une clé API pour votre compte Mailjet
    • YOUR-MAILJET-SECRET-KEY par la clé secrète correspondante pour votre compte Mailjet

    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. Dans le répertoire mailjet, utilisez Maven pour empaqueter la classe en tant que fichier JAR :
    user@test-instance:~# mvn clean package
  7. Assurez-vous que vous utilisez OpenJDK 8 :
    user@test-instance:~# sudo update-alternatives --config java
  8. Pour envoyer un e-mail à partir du répertoire cible, exécutez le fichier JAR avec vos adresses e-mail d'expéditeur et de destinataire comme arguments :
    user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]
CentOS
  1. Connectez-vous à votre instance via SSH :
    gcloud compute ssh [INSTANCE_NAME]
  2. Mettez à jour vos dépôts de packages et installez les packages requis :
    user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
  3. Clonez le dépôt Java de GitHub :
    user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Accédez au code source principal de l'exemple, situé dans :
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Configurez vos paramètres Mailjet, en remplaçant les variables suivantes :

    • YOUR-MAILJET-API-KEY par une clé API pour votre compte Mailjet
    • YOUR-MAILJET-SECRET-KEY par la clé secrète correspondante pour votre compte Mailjet

    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. Dans le répertoire mailjet, utilisez Maven pour empaqueter la classe en tant que fichier JAR :
    user@test-centos:~# mvn clean package
  7. Assurez-vous que vous utilisez OpenJDK 8 :
    user@test-centos:~# sudo alternatives --config java
  8. Pour envoyer un e-mail à partir du répertoire cible, exécutez le fichier JAR avec vos adresses e-mail d'expéditeur et de destinataire comme arguments :
    user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]

Paramètres SMTP de Mailjet

Voici un récapitulatif des paramètres SMTP spécifiques de Mailjet utilisés pour configurer les clients :

  • Hôte : in.mailjet.com
  • Port : 2525

Testez d'autres fonctionnalités de Google Cloud Platform. Découvrez nos tutoriels.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine