ESP32 - Gmail

In deze handleiding leert u hoe u de ESP32 programmeert om een e-mail te versturen vanaf uw Gmail-account. De afzender van de e-mail is een Gmail-account, terwijl de ontvanger elk type e-mailaccount kan zijn.

ESP32 Gmail

Benodigde hardware

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×(Alternatief) ESP32 Uno-form board
1×(Alternatief) ESP32 S3 Uno-form board
1×USB-kabel Type-C
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables ESP32 Starterskit (ESP32 inbegrepen)
1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Voorbereiding

We hebben een Gmail-account en het bijbehorende app-wachtwoord nodig om in de code te gebruiken. Let op de volgende punten:

  • Gebruik niet uw bestaande Gmail-account. Maak een nieuw account aan, speciaal voor testdoeleinden, om mogelijke problemen te voorkomen.
  • Het wachtwoord dat in de ESP32-code wordt gebruikt, is niet hetzelfde als het wachtwoord waarmee u inlogt op Gmail via een webbrowser. U moet een "App-wachtwoord" verkrijgen via uw Google-account door een aantal stappen te volgen.

Hier is een stapsgewijze uitleg:

Gmail beveiliging
  • Zet de 2-stapsverificatie aan (App-wachtwoorden zijn alleen te gebruiken bij accounts met 2-stapsverificatie ingeschakeld).
  • Bezoek de pagina Google App-wachtwoorden en maak een app-wachtwoord aan. Geef het een naam die u herkent.
Google App-wachtwoorden
  • Klik op de knop "Maken". U ontvangt een 16-cijferig wachtwoord dat er zo uitziet:
Gmail App-wachtwoorden
  • Kopieer en bewaar dit 16-cijferige wachtwoord goed. Dit heeft u nodig in de ESP32-code in het volgende gedeelte.

※ Notiz:

Google kan zijn gebruikersinterface in de loop van de tijd aanpassen. Volgt u bovenstaande stappen maar kunt u het “App-wachtwoord” niet vinden? Zoek dan naar “Hoe verkrijg ik Google App-wachtwoorden” voor de meest recente instructies.

ESP32-code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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(); } }

Snelle stappen

  • Als u voor het eerst met ESP32 werkt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Sluit de ESP32 aan op uw PC met een USB-kabel.
  • Open de Arduino IDE op uw PC.
  • Selecteer het juiste ESP32-board (bijvoorbeeld ESP32 Dev Module) en de juiste COM-poort.
  • Open de Library Manager via het Library Manager-icoon in de linker navigatiebalk van de Arduino IDE.
  • Zoek op ESP Mail Client en selecteer de ESP Mail Client van Mobizt.
  • Klik op Installeren om de ESP Mail Client-bibliotheek te installeren.
ESP32 ESP Mail Client bibliotheek
  • Kopieer de bovenstaande code en open deze in de Arduino IDE.
  • Pas de WiFi-instellingen (SSID en wachtwoord) aan in de code door de constanten WIFI_SSID en WIFI_PASSWORD te wijzigen naar uw eigen gegevens.
  • Pas het verzender-e-mailadres en het wachtwoord in de code aan door de constanten SENDER_EMAIL en SENDER_PASSWORD te wijzigen naar uw eigen gegevens.
  • Pas het ontvanger-e-mailadres in de code aan via de constante RECIPIENT_EMAIL. Het ontvanger-e-mailadres kan hetzelfde zijn als dat van de verzender.

※ Notiz:

  • Het verzender-e-mailadres MOET een Gmail-account zijn.
  • Het verzender-wachtwoord is het app-wachtwoord dat u in de vorige stap heeft aangemaakt.
  • Het ontvanger-e-mailadres kan elk type e-mailadres zijn.
  • Klik op de Upload-knop in de Arduino IDE om de code naar de ESP32 te uploaden.
  • Open de Seriële Monitor.
  • Controleer het resultaat in de Seriële Monitor.
COM6
Send
#### Bericht succesvol verzonden > 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  
  • Controleer vervolgens de inbox van het ontvanger-e-mailaccount. U ontvangt een e-mail zoals hieronder weergegeven:
ESP32 verstuurt e-mail

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap door het proces.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!