Arduino - Gmail
Neste guia, vamos aprender a configurar o Arduino para enviar um e-mail usando sua conta do Gmail. O e-mail será enviado de uma conta do Gmail e pode ser recebido por qualquer conta de e-mail.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino 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.
Preparação Prévia
Para usar o código, precisamos de uma conta do Gmail e de uma senha especial para o aplicativo. Aqui estão os detalhes importantes para lembrar:
- Crie uma nova conta do Gmail só para testes, não a sua conta habitual, para evitar problemas.
- A senha no código do Arduino é diferente da senha de login do seu Gmail. Você precisa obter uma "Senha de app" na sua Conta do Google seguindo passos específicos.
Aqui estão os passos, um por um:
- Crie uma nova conta do Gmail.
- Entre na conta que você acabou de criar.
- Acesse sua Conta do Google.
- Vá até a seção "Segurança".

- Ative a Verificação em duas etapas (você precisa ativar a Verificação em duas etapas para usar senhas de app).
- Acesse o site Senhas de app do Google e crie uma senha de app. Você pode escolher qualquer nome para ela.

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

- Guarde e salve esse número de 16 dígitos. Você vai usá-lo no código do Arduino no próximo passo.
※ Nota:
A interface do Google pode mudar. Se você não encontrar "Senhas de app" seguindo os passos acima, pesquise "Como obter Senhas de app do Google" para encontrar instruções atualizadas.
Código Arduino
/*
* Este código de Arduino foi desenvolvido por pt.newbiely.com
* Este código de Arduino é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino/arduino-gmail
*/
#include <WiFiS3.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 Arduino";
String textMsg = "This is an email sent from Arduino.\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("Arduino");
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.println("Connection error: ");
Serial.print("- Status Code: ");
Serial.println(smtp.statusCode());
Serial.print("- Error Code: ");
Serial.println(smtp.errorCode());
Serial.print("- Reason: ");
Serial.println(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.println("Connection error: ");
Serial.print("- Status Code: ");
Serial.println(smtp.statusCode());
Serial.print("- Error Code: ");
Serial.println(smtp.errorCode());
Serial.print("- Reason: ");
Serial.println(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()) {
for (size_t i = 0; i < smtp.sendingResult.size(); i++) {
// get the result item
SMTP_Result result = smtp.sendingResult.getItem(i);
Serial.print("Status: ");
if (result.completed)
Serial.println("success");
else
Serial.println("failed");
Serial.print("Recipient: ");
Serial.println(result.recipients.c_str());
Serial.print("Subject: ");
Serial.println(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 Arduino Uno R4, veja como configurar o ambiente para o Arduino Uno R4 na Arduino IDE.
- Conecte a placa Arduino ao seu PC usando um cabo USB.
- Abra a Arduino IDE no seu PC.
- Selecione a placa Arduino correta (Arduino Uno R4 WiFi) e a porta COM.
- Abra o Library Manager clicando no ícone Library Manager no lado esquerdo da Arduino IDE.
- Pesquise por ESP Mail Client e encontre o ESP Mail Client da Mobizt.
- Clique no botão Install para instalar a biblioteca ESP Mail Client.

- Copie o código acima e abra-o na Arduino IDE.
- Atualize os dados do seu WiFi substituindo WIFI_SSID e WIFI_PASSWORD pelo SSID e pela senha da sua rede WiFi.
- Edite os dados do seu e-mail no código, inserindo seu e-mail e sua senha em SENDER_EMAIL e SENDER_PASSWORD.
- Altere o endereço de e-mail que vai receber as mensagens para o seu e-mail, atualizando RECIPIENT_EMAIL. Observação: o e-mail do destinatário pode ser o mesmo do remetente.
※ Nota:
- O e-mail do remetente deve ser uma conta do Gmail.
- A senha do remetente é a Senha de app que você recebeu no passo anterior.
- O e-mail do destinatário pode ser de qualquer tipo.
- Clique no botão Upload na Arduino IDE para enviar o código para o Arduino.
- Abra o Serial Monitor.
- Veja o resultado no Serial Monitor.
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Uno' 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 Arduino
----------------
- Verifique a caixa de entrada da pessoa para quem você enviou o e-mail. Você receberá um e-mail como o seguinte:
