ESP32 - Gmail

In diesem Tutorial lernen wir, wie man den ESP32 programmiert, um eine E-Mail von Ihrem Gmail-Konto zu senden. Der Absender der E-Mail wird ein Gmail-Konto sein, und der Empfänger kann jede Art von E-Mail-Konto sein.

ESP32 Gmail

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Vorbereitung

Wir benötigen ein Gmail-Konto und das entsprechende App-Passwort, das im Code verwendet wird. Hier sind die wichtigsten Punkte, die zu beachten sind:

  • Verwenden Sie nicht Ihr aktuelles Gmail-Konto. Erstellen Sie ein neues Konto, das speziell zum Testen gedacht ist, um mögliche Probleme zu vermeiden.
  • Das im ESP32-Code verwendete Passwort ist nicht dasselbe wie das, mit dem Sie sich über einen Webbrowser bei Gmail anmelden. Sie müssen bestimmte Schritte befolgen, um aus Ihrem Google-Konto ein App-Passwort zu erhalten.

Hier ist eine Schritt-für-Schritt-Anleitung:

  • Erstellen Sie ein neues Gmail-Konto.
  • Melden Sie sich beim neu erstellten Konto an.
  • Gehen Sie zu Ihrem Google-Konto.
  • Wechseln Sie zum Abschnitt „Sicherheit“.
Gmail-Sicherheit
  • Aktivieren Sie die Zwei-Faktor-Authentifizierung (App-Passwörter können nur mit Konten verwendet werden, bei denen die Zwei-Faktor-Authentifizierung aktiviert ist).
  • Besuchen Sie die Seite Google App-Passwörter und erstellen Sie ein App-Passwort. Sie können ihm jeden beliebigen Namen geben.
Google-App-Passwörter
  • Klicken Sie auf die Schaltfläche Erstellen. Sie erhalten ein 16-stelliges Passwort, das wie folgt aussieht:
Gmail-App-Passwörter
  • Kopiere und speichere diese 16-stellige Nummer. Sie wird im nächsten Teil des ESP32-Codes verwendet.

※ Notiz:

Google könnte seine Benutzeroberfläche im Laufe der Zeit ändern. Wenn Sie die oben genannten Schritte befolgen, aber die App-Passwörter nicht erhalten können, versuchen Sie, nach 'Wie man Google-App-Passwörter erhält' zu suchen, um die neuesten Anweisungen zu erhalten.

ESP32-Code

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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(); } }

Schnelle Schritte

  • Falls dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
  • Schließen Sie das ESP32-Board über ein USB-Kabel an Ihren PC an.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
  • Öffnen Sie den Library Manager, indem Sie auf das Library Manager-Symbol in der linken Navigationsleiste der Arduino IDE klicken.
  • Suchen Sie ESP Mail Client, und finden Sie dann den ESP Mail Client, der von Mobizt erstellt wurde.
  • Klicken Sie auf die Install-Schaltfläche, um die ESP Mail Client-Bibliothek zu installieren.
ESP32 ESP Mail-Client-Bibliothek
  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE.
  • Ändere die WiFi-Informationen (SSID und Passwort) im Code auf deine, indem du die zwei Konstanten WIFI_SSID und WIFI_PASSWORD änderst.
  • Ändere die Absender-E-Mail-Adresse und das Passwort im Code auf deine, indem du die zwei Konstanten SENDER_EMAIL und SENDER_PASSWORD änderst.
  • Ändere die Empfänger-E-Mail im Code auf deine, indem du die zwei Konstanten RECIPIENT_EMAIL änderst. Die Empfänger-E-Mail kann dieselbe wie die des Absenders sein.

※ Notiz:

  • Absender-E-Mail MUSS Gmail sein
  • Absenderpasswort sind die App-Passwörter, die Sie im vorherigen Schritt erhalten haben
  • Empfänger-E-Mail kann jede Art von E-Mail sein
  • Klicken Sie auf die Hochladen-Schaltfläche in der Arduino-IDE, um Code auf den ESP32 hochzuladen.
  • Öffnen Sie den seriellen Monitor.
  • Überprüfen Sie das Ergebnis im seriellen Monitor.
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  
  • Prüfen Sie das Postfach des Empfängers. Sie erhalten eine E-Mail, wie unten dargestellt:
ESP32 sendet eine E-Mail.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!