Introducción
La librería PLC industrial ESP32 es un PLC de código abierto basado en ESP32, y tiene múltiples aplicaciones en el entorno industrial para soluciones de automatización y control industrial.
En esta guía, encontrarás un proceso paso a paso para enviar correos electrónicos mediante un PLC basado en ESP32 utilizando la biblioteca EMailSender, que puede serte útil en varios escenarios, como la configuración de alarmas o la habilitación de funcionalidades de supervisión.
Requisitos
An Ethernet cable, if Ethernet will be used
Cómo Instalar la biblioteca EMailSender
La librería EMailSender permite a cualquier placa compatible con Arduino enviar correos electrónicos con archivos adjuntos mediante el protocolo SMTP. El protocolo SMTP (Simple Mail Transfer Protocol) es un protocolo de comunicación ampliamente utilizado para enviar y recibir mensajes de correo electrónico a través de una red. SMTP opera en la capa de aplicación de la pila de protocolos TCP/IP y se basa en TCP para establecer la conexión entre servidores de correo y cifrar la comunicación.
Se puede instalar con el gestor de librerías del IDE de Arduino, buscando la librería que se desea instalar, o se puede instalar manualmente siguiendo estos pasos. La forma recomendada es instalarlo a través del gestor de bibliotecas:

2. Busca la biblioteca que quieres instalar (por ejemplo, EMailSender)::
Configuración previa para enviar correos electrónicos
Si deseas proteger la conexión entre el PLC y el servidor SMTP, también tendrás que instalar la librería SSLClient
, que cifrará el tráfico TCP entre tú y el servidor SMTP. Aunque utilices Gmail como servidor SMTP, Google obliga a cifrar las conexiones, por lo que también necesitarás la biblioteca. Esta biblioteca también se puede instalar con el Gestor de Bibliotecas, siguiendo los mismos pasos para instalar la biblioteca EMailSender
Tras la instalación, si deses activar SSL en EMailSender, deberá seguir varios pasos:
Cambia la línea 469 in el archivo SSLClient.h de "unsigned char m_iobuf[2048];" a "unsigned char m_iobuf[BR_SSL_BUFSIZE_BIDI];". Puedes encontrar este archivo en tu directorio de librerías Arduino, dentro de la carpeta SSLClient/src.
Pon "define SSLCLIENT_WRAPPER " en el archivo EMailSenderKey.h justo después de "#define EMailSenderKey_h ".
Ejemplo
/* * Modified simple esp32 Gmail send example */ #include "Arduino.h" #include <EMailSender.h> #define SENDER_EMAIL "[email protected]" #define SENDER_PASSWORD "<YOUR-GMAIL-PASSWD>" #define RECEIVER_EMAIL "[email protected]"
//#define USE_ETH EMailSender emailSend(SENDER_EMAIL, SENDER_PASSWORD); #ifndef USE_ETH #include <WiFi.h> const char* ssid = "<YOUR-SSID>"; const char* password = "<YOUR-PASSWD>"; uint8_t connection_state = 0; uint16_t reconnect_interval = 10000; uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr) { static uint16_t attempt = 0; Serial.print("Connecting to "); if(nSSID) { WiFi.begin(nSSID, nPassword); Serial.println(nSSID); } uint8_t i = 0; while(WiFi.status()!= WL_CONNECTED && i++ < 50) { delay(200); Serial.print("."); } ++attempt; Serial.println(""); if(i == 51) { Serial.print("Connection: TIMEOUT on attempt: "); Serial.println(attempt); if(attempt % 2 == 0) Serial.println("Check if access point available or SSID and Password\r\n"); return false; } Serial.println("Connection: ESTABLISHED"); Serial.print("Got IP address: "); Serial.println(WiFi.localIP()); return true; } void Awaits() { uint32_t ts = millis(); while(!connection_state) { delay(50); if(millis() > (ts + reconnect_interval) && !connection_state) { connection_state = WiFiConnect(); ts = millis(); } } } #endif void setup() { Serial.begin(115200); #ifdef USE_ETH uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE }; Ethernet.begin(mac); #else connection_state = WiFiConnect(ssid, password); if(!connection_state) // if not connected to WIFI Awaits(); // constantly trying to connect #endif EMailSender::EMailMessage message; message.subject = "Hello"; message.message = "Come to www.industrialshields.com"; EMailSender::Response resp = emailSend.send(RECEIVER_EMAIL, message); Serial.println("Sending status: "); Serial.println(resp.status); Serial.println(resp.code); Serial.println(resp.desc); } void loop() {}

Solución de probelmas
Si quieres utilizar Gmail como servidor SMTP, es posible que tengas que activar Less Secure Applications en la cuenta de Google que quieras utilizar para enviar correo electrónico.
Si esto no funciona, puedes visitar esta web para saber más.
Cómo enviar correos electrónicos a Gmail utilizando un PLC ESP32