سلام به همه مایکروالکامی ها. در مطالب قبلی راه اندازی و نحوه پروگرام کردن ماژول ESP8266 که یک ماژول وایفای (WiFi) هست رو بررسی کردیم. در این مطلب قراره با استفاده از ماژول ESP8266 و پروتکل SMTP ایمیل ارسال کنیم. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتونید سایر مطلب من رو از این قسمت مطالعه کنید.
قطعات مورد نیاز
فعال کردن SMTP در ایمیل
SMTP مخفف Simple Mail Transfer Protocol به معنی پروتکل انتقال ساده میباشد. با استفاده از SMTP برای ارسال ایمیل، به آدرس و پسورد ایمیل نیاز دارید. در اکانت جیمیل گوگل بصورت پیشفرض این پروتکل غیر فعال است. برای فعال سازی آن به تنظیمات رفته و مشابه تصاویر زیر عمل کنید.
با زدن روی گزینه مشخص شده در تصویر بالا، وارد صفحه جدیدی مانند تصویر زیر خواهید شد. در این قسمت برروی Security بزنید تا منوی سمت راست باز شود.
در قسمت Less secure app access برروی off کلیک نمایید تا صفحه جدید باز شود. در صفحه جدید برروی ON بزنید تا تغییر اعمال شده و SMTP روی اکانت فعال شود.
شماتیک
با استفاده از یک کلید که در شماتیک زیر قابل مشاهده است نسبت به ارسال ایمیل به آدرس جیمیل مورد نظر خود اقدام میکنیم. برای پروگرام کردن ماژول ESP8266 نیاز به مدار دیگه ای است. اول از همه این مطلب را مطالعه کنید و با نحوه پرورگام کردن ESP8266 آشنا بشید چون در ادامه بهش نیاز داریم. نهایتا بعد از آپلود و پروگرام کد های مورد نظر، با زدن کلید، بشرط صحیح بودن و اتصال به وایفای، ایمیل به مقصد ارسال خواهد شد.
برنامه نویسی برای ارسال ایمیل
در این برنامه از دو کتابخانه ESP8266WiFi.h و ESP8266SMTP.h برای ارسال ایمیل استفاده شده است. در مرحله بعدی کد زیر را در محیط برنامه نویسی آردوینو نوشته و طبق توضیحات این مطلب، ماژول ESP8266 را پروگرام میکنیم.
نکته مهم: قبل از پروگرام کردن ماژول، حتما برای نصب ESP8266 از قسمت Boards Manager، از ورژن های قبل از 2.3 استفاده کنید. در غیر اینصورت ایمیل ارسال نخواهد شد و ارور دریافت خواهید کرد. همچنیین کتابخانه ESP8266SMTP.h هم از این لینک دانلود و نصب کنید.
#include <ESP8266WiFi.h> #include <ESP8266SMTP.h> const char* ssid = "نام مودم"; const char* password = "پسورد"; boolean state = false; String text = "متن پیام ایمیل مورد نظر را اینجا وارد کنید."; void setup() { Serial.begin(9600); delay(1000); pinMode(2, INPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void loop() { state = digitalRead(2);// read sensor value if (state == false) { delay(20); if (digitalRead(2) == HIGH) { SMTP.setEmail("آدرس ایمیل فرستنده").setPassword("پسورد").Subject("موضوع ایمیل").setFrom("ESP8266SMTP").setForGmail(); // simply sets port to 465 and setServer("smtp.gmail.com"); if (SMTP.Send("آدرس ایمیل مقصد", text)) { //Email Recepient and its message Serial.println(F("Message sent")); //send confirm } else { Serial.print(F("Error sending message: ")); Serial.println(SMTP.getError()); } } } }
تحلیل کد ها
در ابتدا کتابخانه های مربوط را معرفی کردیم. در تابع Setup تنظیمات اولیه انجام شد.
این تنظیمات شامل کانکت شدن به مودم وایفای نیز میشود. در ابتدای برنامه 2 متغییر زیر تعریف شده است.
داخل دابل کوتیشن ها نام مودم و پسورد آن را بصورت صحیح جایگزین کنید.
const char* ssid = "نام مودم خود"; const char* password = "رمز مودم";
در حلقه loop وضعیت کلید دائما برررسی خواهد شد. در این قسمت در صورتی که کلید فشرده شود، شروع به ارسال ایمیل خواهیم کرد.
state = digitalRead(2);// read sensor value if (state == false) { delay(20); if (digitalRead(2) == HIGH) { SMTP.setEmail("آدرس ایمیل فرستنده").setPassword("پسورد").Subject("موضوع ایمیل").setFrom("ESP8266SMTP").setForGmail(); // simply sets port to 465 and setServer("smtp.gmail.com"); if (SMTP.Send("آدرس ایمیل مقصد", text)) { //Email Recepient and its message Serial.println(F("Message sent")); //send confirm } else { Serial.print(F("Error sending message: ")); Serial.println(SMTP.getError()); } } }
با استفاده از کد زیر، ادرس ایمیل مقصد و متن ارسالی را وارد میکنیم. میتوان متن مورد نظر را بدون محدودیت در داخل متغیر text جایگزین کرد. البته هرچه طول متن بیشتر باشد حافظه بیشتر اشغال میشود.
if (SMTP.Send("آدرس ایمیل مقصد", text)) { Serial.println(F("Message sent")); //send confirm } else { Serial.print(F("Error sending message: ")); Serial.println(SMTP.getError()); }
درصورت موفق بودن ارسال، برروی سریال مانیتور عبارت Message sent نمایش داده خواهد شد.
برای دانلود سورس کد، از این لینک اقدام کنید.
نتیجه
همانطور که در تصویر زیر مشخص است، ایمیل های ارسالی با ماژول ESP8266 در قسمت SPAM اکانت قابل مشاهده میباشند.
جمع بندی
در این مطلب نحوه ارسال ایمیل با استفاده از ماژول های ESP8266 بررسی شد. برای انجام این کار علاوه بر متصل کردن ماژول ESP8266 به مودم خود، باید پروتکل SMTP را نیز روی اکانت ایمیل فرستنده فعال کرد. همچنین نحوه فعال سازی پروتکل SMTP برروی اکانت جیمیل شرح داده شد. امیدوارم از این آموزش کمال بهره را برده باشید. در صورتی که هرگونه نظر یا سوال داشتید درباره این آموزش لطفا اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش را پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.
وقت بخیر
اگه بخواییم بجای gmail از سرویس ایمیل دیگه ای مثل simple@simple.com استفاده کنیم که بر پایه پروتکل SMTP باشه و با تغییر وضعیت سنسور در حالت high به low یا برعکس ایمیل ارسال کنه چه تغییری در کد بایستی داده شه؟
سلام، فرقی نمیکنه روش یکی هستش. فقط داخل کد باید یوزرنیم و پسورد ایمیل خودتون قرار بدید.