ESP8266 - Gmail | ESP8266 - Gmail
이 가이드는 ESP8266을 설정하여 Gmail 계정을 통해 이메일을 보내는 방벭을 보여줍니다. 이메일은 Gmail 계정에서 보내질 것이며, 어떤 이메일 계정에서도 받을 수 있습니다.
Hardware Preparation
1 | × | ESP8266 NodeMCU | Amazon | |
1 | × | Micro USB Cable | Amazon | |
1 | × | (Optional) Screw Terminal Expansion Board for ESP8266 | 쿠팡 | Amazon |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
사전 준비
코드를 사용하려면 Gmail 계정과 특별 앱 비밀번호가 필요합니다. 기억해야 할 주요 사항은 다음과 같습니다:
i. 테스트를 위해 일반적으로 사용하는 계정 대신 특별히 새로운 Gmail 계정을 만드세요. 문제를 피하기 위해서입니다.
ii. ESP8266 코드에서 사용된 비밀번호는 Gmail 계정 비밀번호와 같지 않습니다. 특정 지침을 따라 Google 계정에서 "앱 비밀번호"를 받아야 합니다.
다음은 단계별로 안내입니다:
- 새 Gmail 계정을 생성하세요.
- 생성한 계정에 로그인하세요.
- Google 계정으로 이동하세요.
- "보안" 섹션을 클릭하세요.
- 2단계 인증을 활성화하세요 (앱 비밀번호를 사용하기 전에 필수적입니다).
- Google 앱 비밀번호 웹사이트를 방문하여 앱 비밀번호를 생성하세요. 원하는 이름을 지정할 수 있습니다.
- 버튼을 클릭하면 16자리 비밀번호가 표시됩니다.
- 이 16자리 숫자를 저장하세요. 다음 단계에서 ESP8266 코드에 필요합니다.
※ NOTE THAT:
구글의 사용자 인터face가 변경될 수 있습니다. 위의 단계를 따른 후 "앱 비밀번호"가 보이지 않으면 "Google 앱 비밀번호를 얻는 방법"을 검색하여 최신 지침을 찾으세요.
ESP8266 코드
/*
* 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다
* 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/esp8266/esp8266-gmail
*/
#include <ESP8266WiFi.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 ESP8266";
String textMsg = "This is an email sent from ESP8266.\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("ESP8266");
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();
}
}
Detailed Instructions
Arduino IDE에서 ESP8266을 시작하려면 다음 단계를 따르세요:
- ESP8266을 처음 사용하는 경우 Arduino IDE에서 ESP8266 환경 설정하는 방법 튜토리얼을 확인하세요.
- 다이어그램에 표시된 대로 구성요소를 연결하세요.
- USB 케이블을 사용하여 ESP8266 보드를 컴퓨터에 연결하세요.
- 컴퓨터에서 Arduino IDE를 엽니다.
- 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.
- Arduino IDE의 왼쪽에 있는 Library Manager 아이콘을 클릭하세요.
- ESP Mail Client를 검색하고 Mobizt가 제공하는 것을 선택하세요.
- Install 버튼을 눌러 ESP Mail Client 라이브러리를 추가하세요.
- 위의 코드를 복사하여 Arduino IDE에서 열어주세요.
- WIFI_SSID 및 WIFI_PASSWORD를 귀하의 WiFi 네트워크의 SSID와 비밀번호로 변경하여 WiFi 정보를 업데이트하세요.
- 코드에서 SENDER_EMAIL 및 SENDER_PASSWORD 아래에 이메일과 비밀번호를 입력하세요.
- 필요한 경우 RECIPIENT_EMAIL에 수신자의 이메일 주소를 귀하의 이메일로 업데이트하세요. 발신자의 이메일과 동일할 수 있습니다.
※ NOTE THAT:
- 발신자의 이메일은 Gmail 계정이어야 합니다.
- 발신자의 비밀번호는 이전 단계에서 제공된 앱 비밀번호입니다.
- 수신자의 이메일은 어떤 종류여도 괜찮습니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP8266으로 보냅니다.
- 시리얼 모니터를 엽니다.
- 시리얼 모니터에서 결과를 확인합니다.
COM6
#### 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 ESP8266
----------------
Autoscroll
Clear output
9600 baud
Newline
- 이메일을 보낸 사랑의 이메일 수신함을 확인하세요. 이와 비슷한 이메일을 찾을 수 있을 것입니다.
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.