ESP32 - Gmail

Dans ce tutoriel, nous apprendrons à programmer l'ESP32 pour envoyer un courriel depuis votre compte Gmail. L'expéditeur du courriel sera un compte Gmail et le destinataire pourra être n'importe quel type de compte de courriel.

ESP32 Gmail

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Pré-préparation

Nous avons besoin d'un compte Gmail et de son mot de passe d'application correspondant à utiliser dans le code. Voici les points clés à noter :

  • N'utilisez pas votre compte Gmail actuel. Créez-en un nouveau spécifiquement pour les tests afin d'éviter tout problème potentiel.
  • Le mot de passe utilisé dans le code ESP32 n'est pas le même que celui que vous utilisez pour vous connecter à Gmail via un navigateur web. Vous devez suivre certaines étapes pour obtenir un "mot de passe d'application" de votre compte Google.

Voici un guide étape par étape :

Sécurité Gmail
  • Activez la vérification en deux étapes (les mots de passe d'application ne peuvent être utilisés qu'avec des comptes ayant activé la vérification en deux étapes).
  • Visitez la page Mots de passe d'application Google et créez un mot de passe d'application. Vous pouvez lui donner n'importe quel nom.
Mots de passe d'application Google
  • Cliquez sur le bouton Créer. Vous recevrez un mot de passe de 16 chiffres qui ressemble à ceci :
Mots de passe des applications Gmail
  • Copiez et enregistrez ce numéro à 16 chiffres. Il sera utilisé dans le code ESP32 dans la partie suivante.

※ NOTE THAT:

Google peut modifier son interface utilisateur au fil du temps. Si vous suivez les étapes ci-dessus mais ne parvenez pas à obtenir les "Mots de passe d'application", essayez de rechercher "Comment obtenir les mots de passe d'application Google" pour les instructions les plus récentes.

Code ESP32

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-gmail */ #include <WiFi.h> #include <ESP_Mail_Client.h> #define WIFI_SSID "YOUR_WIFI_SSID" // CHANGE IT #define WIFI_PASSWORD "YOUR_WIFI_PASSWORD" // CHANGE IT // the sender email credentials #define SENDER_EMAIL "xxxxxx@gmail.com" // CHANGE IT #define SENDER_PASSWORD "xxxx xxxx xxxx xxxx" // CHANGE IT to your Google App password #define RECIPIENT_EMAIL "xxxxxx@gmail.com" // CHANGE IT #define SMTP_HOST "smtp.gmail.com" #define SMTP_PORT 587 SMTPSession smtp; void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to Wi-Fi"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(300); } Serial.println(); Serial.print("Connected with IP: "); Serial.println(WiFi.localIP()); Serial.println(); String subject = "Email Notification from ESP32"; String textMsg = "This is an email sent from ESP32.\n"; textMsg += "Sensor value: "; textMsg += "15"; // OR replace this value read from a sensor gmail_send(subject, textMsg); } void loop() { // YOUR OTHER CODE HERE } void gmail_send(String subject, String textMsg) { // set the network reconnection option MailClient.networkReconnect(true); smtp.debug(1); smtp.callback(smtpCallback); Session_Config config; // set the session config config.server.host_name = SMTP_HOST; config.server.port = SMTP_PORT; config.login.email = SENDER_EMAIL; config.login.password = SENDER_PASSWORD; config.login.user_domain = F("127.0.0.1"); config.time.ntp_server = F("pool.ntp.org,time.nist.gov"); config.time.gmt_offset = 3; config.time.day_light_offset = 0; // declare the message class SMTP_Message message; // set the message headers message.sender.name = F("ESP32"); message.sender.email = SENDER_EMAIL; message.subject = subject; message.addRecipient(F("To Whom It May Concern"), RECIPIENT_EMAIL); message.text.content = textMsg; message.text.transfer_encoding = "base64"; message.text.charSet = F("utf-8"); message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low; // set the custom message header message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>")); // connect to the server if (!smtp.connect(&config)) { Serial.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str()); return; } if (!smtp.isLoggedIn()) { Serial.println("Not yet logged in."); } else { if (smtp.isAuthenticated()) Serial.println("Successfully logged in."); else Serial.println("Connected with no Auth."); } // start sending Email and close the session if (!MailClient.sendMail(&smtp, &message)) Serial.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str()); } // callback function to get the Email sending status void smtpCallback(SMTP_Status status) { // print the current status Serial.println(status.info()); // print the sending result if (status.success()) { Serial.println("----------------"); Serial.printf("Message sent success: %d\n", status.completedCount()); Serial.printf("Message sent failed: %d\n", status.failedCount()); Serial.println("----------------\n"); for (size_t i = 0; i < smtp.sendingResult.size(); i++) { // get the result item SMTP_Result result = smtp.sendingResult.getItem(i); Serial.printf("Message No: %d\n", i + 1); Serial.printf("Status: %s\n", result.completed ? "success" : "failed"); Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str()); Serial.printf("Recipient: %s\n", result.recipients.c_str()); Serial.printf("Subject: %s\n", result.subject.c_str()); } Serial.println("----------------\n"); // free the memory smtp.sendingResult.clear(); } }

Étapes rapides

  • Si c'est la première fois que vous utilisez ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
  • Connectez la carte ESP32 à votre PC via un câble micro USB.
  • Ouvrez Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, ESP32 Dev Module) et le port COM.
  • Ouvrez le gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques dans la barre de navigation gauche de Arduino IDE.
  • Recherchez ESP Mail Client, puis trouvez le ESP Mail Client créé par Mobizz.
  • Cliquez sur le bouton Install pour installer la bibliothèque ESP Mail Client.
Bibliothèque client de messagerie ESP32 ESP
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Modifiez les informations WiFi (SSID et mot de passe) dans le code par les vôtres en modifiant deux constantes WIFI_SSID et WIFI_PASSWORD
  • Modifiez l'adresse e-mail de l'expéditeur et le mot de passe dans le code par les vôtres en modifiant deux constantes SENDER_EMAIL et SENDER_PASSWORD
  • Modifiez l'adresse e-mail du destinataire dans le code par la vôtre en modifiant deux constantes RECIPIENT_EMAIL. L'e-mail du destinataire peut être le même que celui de l'expéditeur.

※ NOTE THAT:

  • L'email de l'expéditeur DOIT être Gmail
  • Le mot de passe de l'expéditeur est le mot de passe d'application que vous avez obtenu à l'étape précédente
  • L'email du destinataire peut être de n'importe quel type
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'ESP32
  • Ouvrez le moniteur série
  • Vérifiez le résultat sur le moniteur série.
COM6
Send
#### Message sent successfully > C: message sent successfully ---------------- Message sent success: 1 Message sent failed: 0 ---------------- Message No: 1 Status: success Date/Time: May 27, 2024 04:42:50 Recipient: xxxxxx@gmail.com Subject: Email Notification from ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez la boîte de réception de votre destinataire. Vous recevrez un courriel comme ci-dessous :
ESP32 envoie un e-mail

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!