samedi 30 janvier 2021

Envoi d'un email par l'ESP32

Dans certaines situations, il peut être intéressant de programmer un ESP32 pour qu'il envoie un email. Il pourrait s'agir, par exemple, d'un rapport quotidien vous indiquant les valeurs mesurées par ses capteurs, ou encore d'une alerte vous avisant qu'un événement inhabituel a été détecté.


Obtenir les paramètres du serveur SMTP utilisé

Pour l'envoi du email, l'ESP32 enverra des instructions à un serveur SMTP (Simple Mail Transfer Protocol). Pour ce faire, vous pouvez utiliser un compte email sur Gmail, sur outlook.com, etc. Pour programmer l'ESP32, vous aurez besoin de connaître l'adresse du serveur SMTP associé à votre compte email, ainsi que le numéro de son port.

Pour ma part, j'ai utilisé un compte outlook.com. En allant dans les paramètres (par l'entremise de la roue d'engrenage en haut à droite, puis en cliquant sur "Afficher tous les paramètres d'Outlook",j'ai accédé à la section "Courrier", puis "Synchroniser le courriel". À cet endroit, on m'informe que mon serveur SMTP est smtp.office365.com, et que le port est 587. Ces informations peuvent évidemment être différentes pour le compte email que vous aller choisir d'utiliser.


Installation de la bibliothèque

Par l'entremise du gestionnaire de bibliothèques de l'IDE Arduino, j'ai installé la bibliothèque ESP Mail Client par Mobizt.


En principe, cette bibliothèque fonctionne également avec l'ESP8266 (pourvu que le core ESP8266 soit de la version 2.6.3 ou plus récente). Malheureusement, je me suis buté à une erreur de compilation à chacune de mes tentatives de l'utiliser avec l'ESP8266.

Exemple de sketch

J'ai fait le sketch ci-dessous en utilisant, comme point de départ, l'exemple "Send_Text" fourni par l'auteur de la bibliothèque. Dans son exemple, l'auteur fait la démonstration d'à peu près tous les paramètres qui peuvent être modifiés. De mon côté, j'ai plutôt opté pour un sketch aussi bref que possible qui utilise généralement les valeurs par défaut, sans les modifier.

Dans ce sketch, je simule l'envoi de la mesure d'un capteur en générant un nombre aléatoire. Ainsi, vous pouvez facilement faire l'essai du programme sans qu'il soit nécessaire de brancher un véritable capteur à l'ESP32.

La fonction send_email() n'est exécutée qu'une seule fois, au démarrage du programme. Bien entendu, selon vos besoins, vous pouvez l'exécuter de façon périodique, ou lorsqu'un événement spécifique est détecté par un capteur.

Il va sans dire que, pour que le programme fonctionne, vous devez y écrire le nom et le mot de passe de votre réseau wifi, le login et le mot de passe de votre compte email, l'adresse email du destinataire, etc. (lignes 15 à 29).

-

-

Grâce à la fonction smtpCallback, à la fin du sketch, on peut suivre sur le moniteur série le processus d'expédition du email.


L'email a bel et bien été envoyé...et reçu!

À lire également

Ce blog comporte plusieurs autres projets impliquant l'ESP32, notamment l'écriture de données dans un document Google Sheets ou Google Docs.

Yves Pelletier (TwitterFacebook

2 commentaires:

  1. Tout bonnement GENIAL, juste ce que je cherchais merci de cette aide bienvenue.

    RépondreSupprimer
  2. Super pratique à utiliser sans compter, merci

    RépondreSupprimer