ESP32 - Gmail
Neste tutorial, vamos aprender a programar o ESP32 para enviar um e-mail da sua conta do Gmail. O remetente do e-mail será uma conta do Gmail, e o destinatário pode ser qualquer tipo de conta de e-mail.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Pré-Preparação
Precisamos de uma conta do Gmail e da senha de app correspondente para usar no código. Estes são os pontos principais:
- Não use a sua conta atual do Gmail. Crie uma nova especificamente para testes, para evitar possíveis problemas.
- A senha usada no código do ESP32 não é a mesma que você usa para fazer login no Gmail pelo navegador. Você precisa seguir alguns passos para obter uma "Senha de app" na sua Conta do Google.
Aqui está um guia passo a passo:
- Crie uma nova conta do Gmail.
- Faça login na conta recém-criada.
- Vá para a sua Conta do Google.
- Navegue até a seção "Segurança".

- Ative a Verificação em duas etapas (as senhas de app só podem ser usadas em contas com a Verificação em duas etapas ativada).
- Acesse a página Senhas de app do Google e crie uma senha de app. Você pode dar qualquer nome a ela.

- Clique no botão Criar. Você receberá uma senha de 16 dígitos parecida com esta:

- Copie e guarde esse número de 16 dígitos. Ele será usado no código do ESP32 na próxima parte.
※ Nota:
O Google pode mudar sua interface com o tempo. Se você seguir os passos acima, mas não conseguir obter as "Senhas de app", tente pesquisar "Como obter senhas de app do Google" para ver as instruções mais recentes.
Código ESP32
/*
* Este código de ESP32 foi desenvolvido por pt.newbiely.com
* Este código de ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.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();
}
}
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para ESP32 no Arduino IDE.
- Conecte a placa ESP32 ao seu PC por um cabo USB
- Abra o Arduino IDE no seu PC.
- Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda do Arduino IDE.
- Pesquise ESP Mail Client e encontre o ESP Mail Client criado por Mobizt.
- Clique no botão Install para instalar a biblioteca ESP Mail Client.

- Copie o código acima e abra no Arduino IDE
- Altere as informações de WiFi (SSID e senha) no código para as suas, mudando as duas constantes WIFI_SSID e WIFI_PASSWORD
- Altere o e-mail e a senha do remetente no código para os seus, mudando as duas constantes SENDER_EMAIL e SENDER_PASSWORD
- Altere o e-mail do destinatário no código para o seu, mudando a constante RECIPIENT_EMAIL. O e-mail do destinatário pode ser o mesmo do remetente
※ Nota:
- O e-mail do remetente DEVE ser do Gmail
- A senha do remetente é a senha de app que você obteve no passo anterior
- O e-mail do destinatário pode ser de qualquer tipo
- Clique no botão Upload no Arduino IDE para fazer upload do código para o ESP32
- Abra o Serial Monitor
- Veja o resultado no Serial Monitor.
8
Serial.println("Hello World!");
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
#### 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
----------------
- Verifique a caixa de entrada do e-mail do destinatário. Você receberá um e-mail como abaixo:
