ESP8266 - Gmail

Ce guide vous montrera comment configurer un ESP8266 pour envoyer un email via votre compte Gmail. L'email sera envoyé depuis un compte Gmail et pourra être reçu par n'importe quel compte email.

ESP8266 NodeMCU Gmail

Préparation du matériel

1×ESP8266 NodeMCU
1×USB Cable Type-C
1×(Recommended) Screw Terminal Expansion Board for ESP8266
1×(Recommended) Power Splitter For ESP8266 Type-C

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

Pour utiliser le code, vous avez besoin d'un compte Gmail et d'un mot de passe d'application spécial. Voici les détails importants à retenir :

  1. Créez un nouveau compte Gmail spécifiquement pour les tests au lieu d'utiliser votre compte habituel, afin d'éviter tout problème.
  2. Le mot de passe utilisé dans le code ESP8266 n'est pas le même que le mot de passe de votre compte Gmail. Vous devez obtenir un "Mot de passe d'application" à partir de votre compte Google en suivant certaines instructions.

Voici les étapes, une par une :

Sécurité Gmail
  • Activez la validation en deux étapes (c'est essentiel avant de pouvoir utiliser les mots de passe d'application).
  • Rendez-vous sur le site Mots de passe d'application Google et créez un mot de passe d'application. Vous pouvez le nommer comme vous le souhaitez.
Mots de passe d'application Google
  • Cliquez sur le bouton Créer et un mot de passe de 16 chiffres s'affichera pour vous.
Mots de passe des applications Gmail
  • Enregistrez ce numéro à 16 chiffres. Vous en aurez besoin pour le code ESP8266 à l'étape suivante.

※ Note:

L'interface utilisateur de Google peut changer. Si vous ne voyez pas "Mots de passe d'application" après avoir suivi les étapes ci-dessus, recherchez "Comment obtenir des mots de passe d'application Google" pour trouver des instructions mises à jour.

Code ESP8266

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-gmail */ #include <ESP8266WiFi.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 ESP8266"; String textMsg = "This is an email sent from ESP8266.\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("ESP8266"); 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

Pour commencer avec l'ESP8266 sur l'IDE Arduino, suivez ces étapes :

  • Consultez le Installation du logiciel ESP8266. tutoriel si c'est votre première utilisation de l'ESP8266.
  • Connectez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez l'Arduino IDE sur votre ordinateur.
  • Choisissez la carte ESP8266 correcte, telle que (par exemple, NodeMCU 1.0 (ESP-12E Module)), et son port COM respectif.
  • Cliquez sur l'icône Gestionnaire de bibliothèque à gauche dans l'Arduino IDE.
  • Recherchez ESP Mail Client et choisissez celui de Mobizt.
  • Appuyez sur le bouton Install pour ajouter la bibliothèque ESP Mail Client.
Bibliothèque ESP8266 NodeMCU ESP Mail Client
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
  • Mettez à jour vos informations WiFi en changeant WIFI_SSID et WIFI_PASSWORD pour le SSID et le mot de passe de votre réseau WiFi.
  • Entrez votre email et votre mot de passe dans le code sous SENDER_EMAIL et SENDER_PASSWORD.
  • Mettez à jour l'adresse email du destinataire dans RECIPIENT_EMAIL avec votre propre email, si nécessaire. Elle peut être la même que celle de l'expéditeur.

※ Note:

  • L'e-mail de l'expéditeur doit être un compte Gmail.
  • Le mot de passe de l'expéditeur est le mot de passe d'application donné à l'étape précédente.
  • L'e-mail du destinataire peut être de n'importe quel type.
  • Cliquez sur le bouton Upload dans Arduino IDE pour envoyer le code à l'ESP8266.
  • Ouvrez le Moniteur Série.
  • Vérifiez les résultats 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 ESP8266 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Consultez la boîte de réception de la personne à qui vous avez envoyé l'email. Vous trouverez un email similaire à celui-ci :
ESP8266 NodeMCU 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!