ESP32 - Gmail

En este tutorial, aprenderemos cómo programar el ESP32 para enviar un correo electrónico desde tu cuenta de Gmail. El remitente será una cuenta de Gmail, y el destinatario puede ser cualquier tipo de cuenta de correo.

ESP32 Gmail

Hardware Requerido

1×Módulo de Desarrollo ESP32 ESP-WROOM-32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP32
1×(Recomendado) Breakout Expansion Board for ESP32
1×(Recomendado) Divisor de Alimentación para ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Pre-Preparación

Necesitamos una cuenta de Gmail y su correspondiente contraseña de la aplicación para usar en el código. A continuación, los puntos clave a tener en cuenta:

  • No uses tu cuenta de Gmail actual. Crea una nueva específicamente para las pruebas para evitar posibles problemas.
  • La contraseña utilizada en el código ESP32 no es la misma que utilizas para iniciar sesión en Gmail a través de un navegador web. Debes seguir ciertos pasos para obtener una 'Contraseña de la aplicación' de tu cuenta de Google.

Aquí está una guía paso a paso:

Seguridad de Gmail
  • Habilita la verificación en dos pasos (las contraseñas de las aplicaciones solo se pueden usar con cuentas que tengan activada la verificación en dos pasos).
  • Visita la página de Contraseñas de Google para aplicaciones y crea una contraseña para la aplicación. Puedes darle cualquier nombre.
Contraseñas de Google para aplicaciones
  • Haz clic en el botón Crear. Recibirás una contraseña de 16 dígitos que se ve así:
Contraseñas de la aplicación de Gmail
  • Copie y guarde este número de 16 dígitos. Se utilizará en el código ESP32 en la siguiente parte.

※ Nota:

Google puede cambiar su interfaz de usuario con el tiempo. Si sigues los pasos anteriores pero no puedes obtener las contraseñas de la aplicación, intenta buscar 'Cómo obtener las contraseñas de la aplicación de Google' para obtener las instrucciones más recientes.

Código ESP32

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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(); } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Conecta la placa ESP32 a tu PC mediante un cable USB
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Abre el Gestor de Bibliotecas haciendo clic en el icono Gestor de Bibliotecas en la barra de navegación izquierda de Arduino IDE.
  • Busca ESP Mail Client, luego encuentra ESP Mail Client creado por Mobizt.
  • Haz clic en el botón Instalar para instalar la librería ESP Mail Client.
Biblioteca de cliente de correo ESP Mail para ESP32
  • Copia el código anterior y ábrelo con Arduino IDE
  • Cambia la información de WiFi (SSID y contraseña) en el código por la tuya, cambiando dos constantes WIFI_SSID y WIFI_PASSWORD
  • Cambia el correo del remitente y la contraseña en el código por los tuyos, cambiando dos constantes SENDER_EMAIL y SENDER_PASSWORD
  • Cambia el correo del destinatario en el código por el tuyo, cambiando la constante RECIPIENT_EMAIL. El correo del destinatario puede ser el mismo que el del remitente

※ Nota:

  • El correo del remitente DEBE ser Gmail
  • La contraseña del remitente es la contraseña de la aplicación que obtuviste en el paso anterior
  • El correo del destinatario puede ser de cualquier tipo de correo electrónico
  • Haz clic en el botón Subir en la IDE de Arduino para subir el código al ESP32
  • Abre el Monitor serie
  • Revisa el resultado en el Monitor serie
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  
  • Verifique la bandeja de entrada del destinatario. Recibirá un correo electrónico como se muestra a continuación:
ESP32 envía un correo electrónico.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!