Un petit tuto rapide sur l'utilisation de la bibliothèque ESP-Mail-Client, client mail pour ESP32 et ESP8266.
Je viens de tester et ça a marché en moins de 5 minutes !
Après installation de la bibliothèque, j'ai testé deux exemples :
- Send_Text
- Send_HTML
Voici les lignes à configurer :
Connexion à votre box :
#define WIFI_SSID "****"
#define WIFI_PASSWORD "****"
Choix de Gmail :
#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 465
Votre compte Gmail :
#define AUTHOR_EMAIL "xxx@gmail.com"
#define AUTHOR_PASSWORD "****"
Définition de la session : rien à changer, on peut laisser ceci aussi :
session.login.user_domain = "mydomain.net";
Ce paramètre peut aussi être remplacé par l'adresse IP de l'ESPxx, mais ça marche aussi comme ça.
Le destinataire, le sujet :
message.sender.name = "ESP Mail";
message.sender.email = AUTHOR_EMAIL;
message.subject = "Test sending html Email";
message.addRecipient("un nom ici", "xxxx@xxxx.fr");
- sender.name : le nom qui apparaîtra dans le mail reçu pour l'envoyeur
- subject : le sujet de votre mail
- addRecipient prend 2 paramètres (chaines de caractères) : un alias et l'adresse du destinataire. Je n'ai pas essayé d'envoyer à plusieurs destinataires, mais ce doit être possible avec plusieurs fois cette ligne
Pour un contenu complexe en HTML, on peut créer une String qui contient le code HTML, puis la convertir en char* :
message.html.content = myString.c_str();
J'ai testé avec des caractères français (ç, é, etc), ça fonctionne en mettant
message.html.charSet = "utf-8";
C'est tout, rien à changer dans le reste.
Le code est assez verbeux, on voit toutes les étapes dans la console :
Logging in...
C: send smtp command, AUTH PLAIN
C: xxxx@gmail.com
C: xxxx@gmail.com *********
< S: 235 2.7.0 AcceptedSending Email...
C: send Email
Sending message header...
C: send message header
< S: 250 2.1.0 OK t14sm24015938wru.64 - gsmtp
< S: 250 2.1.5 OK t14sm24015938wru.64 - gsmtpSending message body...
C: send message body
< S: 354 Go ahead t14sm24015938wru.64 - gsmtpFinishing the message sending...
C: Finish the message sending
< S: 250 2.0.0 OK 1615282810 t14sm24015938wru.64 - gsmtpClosing the session...
C: terminate the SMTP session
< S: 221 2.0.0 closing connection t14sm24015938wru.64 - gsmtpMessage sent successfully
C: Message sent successfully
Message sent success: 1
Message sent failled: 0Message No: 1
Status: success
Date/Time: 1970/1/1 0:0:3
Recipient: xxxx@yyy.fr
Subject: Test sending html EmailC: cleaning SSL connection
Voilà, à vous de jouer !
EDIT : il sera peut-être nécessaire de changer un paramètre sur votre compte Gmail, pour autoriser "les applications tierces" à l'utiliser. Voir ici
Je crois qu'il est possible aussi de définir un mot de passe spécifique (app password) pour une application pour se connecter à votre Gmail. Ca permettra de ne pas laisser votre pass en clair dans le source du code Arduino.