Envoyer des e-mails avec SendGrid

Ce tutoriel montre comment utiliser SendGrid pour envoyer des messages à partir d'une application exécutée sur une instance de Compute Engine. SendGrid est un service de messagerie tiers qui offre aux utilisateurs de Compute Engine un essai gratuit de 12 000 e-mails transactionnels gratuits chaque mois.

Objectifs

  • Utiliser SendGrid avec Postfix sur une instance Compute Engine.
  • Utiliser SendGrid en code Java exécuté sur une instance Compute Engine.
  • Utiliser SendGrid en code Node.js exécuté sur une instance Compute Engine.

Coûts

Ce tutoriel utilise des composants facturables de Cloud Platform, tels que Google Compute Engine et Cloud SQL.

Les nouveaux utilisateurs de la plateforme Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Sélectionnez ou créez un projet Google Cloud Platform.

    Accéder à la page "Gérer les ressources"

  3. Assurez-vous que la facturation est activée pour votre projet Google Cloud Platform.

    Découvrir comment activer la facturation

  4. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  5. Cliquez sur Créer une instance.
  6. Définissez Nom sur tutoriel sendgrid.
  7. Dans la section Disque de démarrage, cliquez sur Modifier pour commencer à configurer le disque de démarrage.
  8. Dans l'onglet Images d'OS, sélectionnez une image Debian or CentOS.

  9. Cliquez sur Sélectionner.
  10. Cliquez sur Créer pour créer l'instance.
  11. Utilisez Google Cloud Platform Marketplace pour vous inscrire au service de messagerie électronique SendGrid. Notez vos informations d'identification de compte SMTP SendGrid, y compris le nom d'utilisateur, le mot de passe et le nom d'hôte. Votre nom d'utilisateur et votre mot de passe SMTP sont les mêmes que ceux utilisés pour vous inscrire au service. Le nom d'hôte SendGrid est smtp.sendgrid.net.
  12. Créez une clé API :
    1. Connectez-vous à Sendgrid et accédez à Paramètres > Clés API.
    2. Créez une clé API.
    3. Sélectionnez les autorisations pour la clé. La clé aura besoin au minimum des autorisations Envoyer des e-mails pour envoyer des messages électroniques.
    4. Cliquez sur Enregistrer pour créer la clé.
    5. SendGrid génère une nouvelle clé. Ceci est la seule copie de la clé alors assurez-vous de la copier et de l'enregistrer pour plus tard.

Envoyer des e-mails avec Postfix depuis votre instance

Suivez ces étapes pour vous connecter à votre instance tutoriel sendgrid et exécuter SendGrid avec Postfix.

Se connecter à une instance sendgrid-tutorial à l'aide de SSH

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne de l'instance à laquelle vous souhaitez vous connecter.

Exécuter Postfix sur votre instance

Exécutez les commandes suivantes dans votre terminal SSH :

  1. Devenez un superutilisateur :

    sudo su -
    
  2. Définissez un "umask" sécurisé :

    umask 077
    
  3. Installez l'agent de transfert de courrier Postfix :

    Debian

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

    CentOS

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

    À l'invite, sélectionnez la configuration Uniquement en local et acceptez le nom de domaine par défaut.

  4. Modifiez les options de configuration de Postfix.

    1. Ouvrez /etc/postfix/main.cf pour le modifier. Par exemple, pour utiliser l'éditeur de texte nano, entrez la commande suivante :

      nano /etc/postfix/main.cf
      
    2. Si les lignes suivantes sont dans le fichier, décommentez-les.

      default_transport = error
      relay_transport = error
      
      \#default_transport = error
      \#relay_transport = error
      
    3. Ajoutez le service SMTP SendGrid en incluant la ligne suivante à la fin du fichier.

      relayhost = [smtp.sendgrid.net]:2525
      
    4. À la fin du fichier, ajoutez également les lignes suivantes pour appliquer la prise en charge SSL/TLS et pour configurer 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.

      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
    5. Enregistrez et fermez le fichier.

  5. Générez la carte de mot de passe SASL.

    • Vous pouvez générer la carte de mot de passe SASL en utilisant le nom d'utilisateur et le mot de passe de votre compte SendGrid :

       echo [smtp.sendgrid.net]:2525 [YOUR_SMTP_LOGIN]:[YOUR_SMTP_PASSWORD] >> /etc/postfix/sasl_passwd
      

      où :

      • [YOUR_SMTP_LOGIN] est votre nom d'utilisateur SendGrid.
      • [YOUR_SMTP_PASSWORD] est votre mot de passe SendGrid.
    • Si vous n'avez pas accès au nom d'utilisateur et au mot de passe de votre compte SendGrid, vous pouvez également générer la carte de mot de passe SASL à l'aide d'une clé API générée à partir de ce compte :

       echo [smtp.sendgrid.net]:2525 apikey:[YOUR_API_KEY] >> /etc/postfix/sasl_passwd
      

      [YOUR_API_KEY] est le contenu d'une clé API que vous avez créée sur votre compte SendGrid.

  6. Utilisez l'utilitaire postmap pour générer un fichier .db :

    postmap /etc/postfix/sasl_passwd
    
  7. Vérifiez que vous avez un fichier .db :

    ls -l /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd.db
    
  8. Supprimez le fichier contenant vos informations d'identification, car il n'est plus nécessaire :

    rm /etc/postfix/sasl_passwd
    
  9. Définissez les autorisations sur votre fichier .db et vérifiez que l'autre fichier a été supprimé :

    chmod 600 /etc/postfix/sasl_passwd.db
    ls -la /etc/postfix/sasl_passwd.db
    
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd.db
    
  10. Rechargez votre configuration pour charger les paramètres modifiés :

    Debian

    /etc/init.d/postfix restart
    

    CentOS

    postfix reload
    

  11. Installez le package mailutils ou mailx :

    Debian

    apt-get install mailutils -y

    CentOS

    yum install mailx -y
    

  12. Envoyer un e-mail test :

    echo '[MESSAGE]' | mail -s [SUBJECT] [EMAIL@EXAMPLE.COM]

    où :

    • [MESSAGE] est le corps de l'e-mail.
    • [SUBJECT] est l'objet de l'e-mail.
    • [EMAIL@EXAMPLE.COM] est l'adresse e-mail à laquelle vous souhaitez envoyer un message.

    Recherchez dans vos journaux système une ligne d'état contenant le status et le code de la réponse correcte du serveur (250) :

    Debian

    tail -n 5 /var/log/syslog
    

    CentOS

    tail -n 5 /var/log/maillog
    

Envoyer des e-mails avec Java sur votre instance

Se connecter à une instance sendgrid-tutorial à l'aide de SSH

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne de l'instance à laquelle vous souhaitez vous connecter.

Créer et envoyer un message électronique

Les instructions suivantes utilisent la bibliothèque cliente Java SendGrid pour créer et envoyer un message électronique via SendGrid. L'exemple complet est disponible sur GitHub.

Dans votre terminal SSH :

  1. Devenez un superutilisateur et définissez un "umask" sécurisé :

    sudo su -
    umask 077
    
  2. Installez Java et Maven :

    apt-get update -y && apt-get install git-core openjdk-8-jdk maven -y
    
  3. Clonez le dépôt GitHub :

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    
  4. Accédez au code source principal de l'exemple :

    cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
    
  5. Ouvrez SendEmailServelet.java pour le modifier.

    • Remplacez YOUR-SENDGRID-API-KEY par la clé API de votre compte SendGrid.

    • Remplacez YOUR-SENDGRID-FROM-EMAIL par l'adresse e-mail depuis laquelle vous souhaitez l'envoyer.

    • Remplacez DESTINATION-EMAIL par l'adresse e-mail à laquelle vous souhaitez envoyer le message électronique.

  6. Accédez au répertoire racine de l'exemple de code :

    cd /root/java-docs-samples/compute/sendgrid
    
  7. Réalisez le package de la classe Java :

    mvn clean package
    
  8. Accédez au nouveau dépôt target :

    cd target
    
  9. Définissez les autorisations pour exécuter le fichier jar :

    chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
    
  10. Exécutez le sélecteur de version Java alternatif :

    update-alternatives --config java
    

    Sélectionnez l'option java-8-openjdk-amd64.

  11. Exécutez le fichier Java :

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

Envoyer un e-mail avec Node.js sur votre instance

Se connecter à une instance sendgrid-tutorial à l'aide de SSH

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne de l'instance à laquelle vous souhaitez vous connecter.

Créer et envoyer un message électronique

Dans votre terminal SSH :

  1. Devenez un superutilisateur et définissez un "umask" sécurisé :

    sudo su -
    umask 077
    
  2. Mettez à jour vos dépôts de packages :

    Debian

    apt-get update
    

    CentOS

    yum update -y
    

  3. Installez les dépendances Node.js :

    Debian

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

    CentOS

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

  4. Installez Node.js. L'installation déploie également npm par défaut :

    Debian

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

    CentOS

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

    Ensuite, installez Node.js :

    yum -y install nodejs
    

  5. Installez le client SendGrid Node.js :

    npm install sendgrid
    
  6. Clonez l'exemple de dépôt :

    git clone https://github.com/googleapis/nodejs-compute.git
    
  7. Accédez au dépôt contenant l'exemple SendGrid :

    cd nodejs-compute/samples
    
  8. Copiez le fichier sendgrid.js :

    cp sendgrid.js sendmail.js
    
  9. Ouvrez sendmail.js pour le modifier.

    • Remplacez <your-sendgrid-api-key> par la de votre compte SendGrid.

    • Remplacez from_email@example.com par l'adresse e-mail à partir de laquelle vous souhaitez envoyer le message électronique.

    • Remplacez to_email@example.com par l'adresse e-mail à laquelle vous souhaitez envoyer le message électronique.

    // 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().catch(console.error);

  10. Exécutez le programme pour envoyer un message électronique via SendGrid :

    node sendmail.js
    

Nettoyage

Afin d'éviter que des frais ne soient facturés sur votre compte Google Cloud Platform pour les ressources utilisées dans ce tutoriel, procédez comme suit :

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet, procédez comme suit :

  1. Dans la console GCP, accédez à la page "Projets".

    Accéder à la page Projets

  2. Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer votre instance Compute Engine

Pour supprimer une instance Compute Engine, procédez comme suit :

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cochez la case à côté de l'instancetutoriel sendgrid.
  3. Cliquez sur le bouton Supprimer en haut de la page pour supprimer l'instance.

Étape suivante

Testez par vous-même 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