راه اندازی ماژول SIM800 قسمت 11 – دریافت و ارسال ایمیل پیوست دار

آموزش راه اندازی ماژول SIM800 ارسال و دریافت ایمیل با SMTP
نوشته شده توسط

در مطلب قبلی راه اندازی SIM800 به بررسی و نحوه تشخیص پیامک و تماس بدون استفاده از دستورات سریال پرداخته شد. در این حالت از پایه RI ماژول SIM800 استفاده شده و دیگر نیازی به بررسی دیتاهای دریافتی سریال برای تشخیص پیامک یا تماس نبود. در این مطلب نحوه ارسال و دریافت ایمیل با استفاده از ماژول SIM800 بررسی خواهد شد. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتونید سایر مطلب من رو از این قسمت مطالعه کنید.


بررسی و فعال کردن SMTP در ایمیل

SMTP مخفف Simple Mail Transfer Protocol به معنی پروتکل انتقال ساده می‌باشد. با استفاده از SMTP برای ارسال ایمیل، به آدرس و پسورد ایمیل نیاز دارید. در اکانت جیمیل گوگل بصورت پیشفرض این پروتکل غیر فعال است. در مطلب ارسال ایمیل با استفاده از ماژول ESP8266 این مورد بطور کامل آموزش داده شده است. با این وجود برای فعال کردن آن باید به تنظیمات گوگل وارد شده و به قسمت Less secure app access وارد شده و این گزینه را در وضعیت ON قرار می‌دهیم.


قطعات مورد نیاز


ارسال ایمیل با استفاده از ماژول SIM800

ماژول های سری SIM800 از پروتکل POP3 که برای خواندن یا حذف کردن ایمیل ها هست نیز پشتیبانی می‌کند. این ایمیل ها نیز می‌توانند دارای فایل ضمیمه و پیوست نیز باشند. در این سری ماژول ها پروتکل ارسال SMTP و پروتکل دریافت ایمیل مبتنی بر POP3 می‌باشد. لازم به ذکر است این ماژول ها در یک زمان امکان ارسال و دریافت ایمیل را ندارد. برای ارسال ایمیل با استفاده از SMTP از پورت 25 معمولا استفاده می‌شود. برای افزایش امنیت و ایمنی ایمیل های ارسالی از پروتکل SSL برای امنیت بیشتر و رمزنگاری استفاده کرده اند. SSL مخفف Socket Secure Layer می‌باشد. در این حالت برای ارسال ایمیل با استفاده از SMTP که توسط SSL رمزنگاری شده است از پورت 456 استفاده می‌شود. نسل بعدی یا بهبوبد یافته SSL پروتکل TLS نیز نام دارد. برای ارسال ایمیل با استفاده از این پروتکل از پورت 587 استفاده خواهد شد.

نکته: برای استفاده از هر کدام از موراد بالا حتما مطمئن شوید که ماژول شما این پروتکل را پشتیبانی می‌کند.

سرویس ارائه دهنده SMTP برای گوگل

در سرویس SMTP برای گوگل برابر smtp.gmail.com و پورت 465 در حالت استفاده از SSL و در صورت استفاده از روش معمولی از 25 برای شماره پورت استفاده می‌شود.

سرویس ارائه دهنده SMTP برای یاهو

در سرویس SMTP برای یاهو برابر smtp.mail.yahoo.com و پورت 465 در حالت استفاده از SSL و در صورت استفاده از روش معمولی از 25 برای شماره پورت استفاده می‌شود.

سرویس ارائه دهنده SMTP برای Hotmail

در سرویس SMTP برای Hotmail برابرsmtp.live.com  و پورت 25 در حالت استفاده از SSL می‌باشد.

استفاده از دستورات AT برای ارسال ایمیل

فعال کردن اینترنت GPRS:

در ابتدا نیاز است که اینترنت ماژول را فعال کنیم. در قسمت های قبل نحوه استفاده و فعال سازی اینترنت ماژول SIM800 بررسی شده است. پس قدم به قدم مراحل را پیش خواهیم رفت.

AT+SAPBR=3,1,"Contype","GPRS"
OK

در این مرحله متناسب با نوع سیم کارت خود APN را وارد می‌کنیم. در اینجا من از همراه اول استفاده کرده ام. سایر اپراتور ها مانند زیر می‌باشد.

ایرانسل: mtnirancell

رایتل: RighTel

AT+SAPBR=3,1,"APN","mcinet"
OK

فعال سازی اینترنت GPRS:

AT+SAPBR =1,1
OK

در صورت موفقیت آمیز بودن، نحوه چشمک زدن LED مربوط به Net تغییر وضعیت خواهد داد و سریع تر چشمک زده و ماژول یک آدرس IP را به ما اختصاص خواهد داد که توسط دستور زیر بررسی می‌شود.

AT+SAPBR=2,1
+SAPBR: 1,1,"102.112.218.167"
OK

تنظیم وضعیت ارسال و شناسه پروفایل حامل ایمیل:

AT+EMAILCID=1
OK

تنظیم مدت زمان ارسال و انتظار برای دریافت پاسخ از سرور:

برای ارسال ایمیل و دریافت پاسخ از طرف سرور نیاز به صرف مدت زمانی (Timeout) است که توسط دستور زیر این زمان برابر 30 ثانیه در نظر گرفته شده است.

AT+EMAILTO=30
OK

تنظیم ایمیل در حالت با امنیت بیشتر یا SSL:

AT+EMAILSSL=1
OK

در صورتی که نمی‌خواهیم از ارسال ایمیل با SSL استفاده شود و از حالت عادی استفاده شود، از AT+EMAILSSL=2 استفاده خواهیم کرد.

تنظیم ادرس ایمیل SMTP متناسب با سرویس دهنده ایمیل خود:

در قسمت پورت باید شماره پورت بصورت صحیح وارد شود. یعنی اگر از حالت SSL استفاده می‌شود این مقدار برابر 465 و در صورت استفاده از حالت عادی برابر 25 شود.

AT+SMTPSRV="SMTP.GMAIL.COM",465
OK

وارد کردن نام کاربری و رمز ورود:

بجای email آدرس ایمیل خود را وارد کنید. البته می‌توانید بدون نوشتن “gmail.com@” یا دامین سرویس دهنده نیز آن را وارد کنید. بجای password نیز رمز ورود ایمیل خود را وارد کنید.

AT+SMTPAUTH=1,"email","password"
OK

تنظیم آدرس ایمیل و نام ارسال کننده:

با این دستور مشخص خواهیم کرد که ایمیل از طرف چه کسی و با چه نامی ارسال شده است. بجای email باید ادرس کامل ایمیل خود را وارد نمایید.

AT+SMTPFROM="email","Microelecom Blog"
OK

تنظیم آدرس گیرنده:

در این حالت آدرس ایمیل شخص گیرنده که قصد ارسال ایمیل را داریم وارد می‌کنیم. این دقیقا مشابه همان To در نرم افزار های ارسال ایمیل است.

AT+SMTPRCPT=0,0,"info@microele.com","Microelecom"
OK

تنظیم آدرس گیرنده دوم یا Cc:

AT+SMTPRCPT=1,0,"email","Microelecom"
OK

تنظیم آدرس گیرنده سوم یا Bcc:

AT+SMTPRCPT=2,0," email"," Microelecom "
OK

تنظیم عنوان یا Subject ایمیل:

برای نوشتن عنوان ایمیل از دستور زیر استفاده می‌شود که باید بجای “subject” در دستور زیر نوشته شود.

AT+SMTPSUB="subject"
OK

تنظیم و نوشتن متن پیام ایمیل:

در ابتدا باید طول پیام مشخص شود. در اینجا است. بعد از ارسال دستور AT+SMTPBODY=11، ماژول در پاسخ DOWNLOAD را نشان داده و بعد از دریافت آن، متن ایمیل با طول مشخص شده را وارد کنید.

AT+SMTPBODY=11
DOWNLOAD
Microelecom
OK

ارسال ایمیل:

بعد از انجام مراحل قبلی و موفقیت آمیز بودن آن، از دستور زیر برای ارسال ایمیل استفاده خواهیم کرد.

AT+SMTPSEND
OK

در صورت موفقیت آمیز بودن ارسال، عبارت زیر بعد از سپری شدن زمانی نشان داده خواهد شد.

+SMTPSEND: 1
در صورتی که پاسخ دریافتی بالا چیزی غیر از عدد 1 بود به منزله خطا تلقی خواهد شد و باید بررسی شود و آن را اصلاح کنید. در تصاویر زیر ایمیل ارسالی و ایمیل دریافت شده را مشاهده می‌کنید.
ایمیل ارسال شده با ماژول SIM800
ایمیل ارسال شده با ماژول SIM800
ایمیل دریافتی
ایمیل دریافتی

ارسال ایمیل با فایل پیوست با استفاده از ماژول SIM800

مراحل ارسال ایمیل پیوست دار نیز مانند مرحله قبل است. در این حالت باید از دستورات دیگری برای ارسال یک فایل ضمیمه استفاده کرد. مراحل کامل ایمیل بصورت فایل ضمیمه دار به شرح زیر است.

AT+SAPBR =1,1

OK

AT+EMAILCID=1

OK

AT+EMAILTO=30

OK

AT+EMAILSSL=1

OK

AT+SMTPSRV="SMTP.GMAIL.COM",465

OK

AT+SMTPAUTH=1,"email","password"

OK

AT+SMTPFROM="email","Microelecom Blog"

OK

AT+SMTPRCPT=0,0,"ایمیل گیرنده","Microelecom"

OK

AT+SMTPSUB="Attachment Email"

OK

AT+SMTPBODY=12

DOWNLOAD
Attachment:
OK

AT+SMTPFILE=1,"text.txt",0

OK

AT+SMTPSEND

OK

+SMTPFT: 1,1360

AT+SMTPFT=11

+SMTPFT: 2,11
Attachment:
OK
+SMTPFT: 1,1360

AT+SMTPFT=0

OK

+SMTPSEND: 1

معرفی فایل پیوست:

برای معرفی یک فایل پیوست که فرمت تکست است از دستور زیر استفاده می‌شود. بجای name در دستور زیر، نام دلخواه مورد نظر برای فایل را وارد کنید.

AT+SMTPFILE=1,"text.txt",0

در مرحله بعد دستور AT+SMTPSEND باید ارسال شود.

AT+SMTPSEND

OK

بعد ارسال این دستور، پاسخ زیر بعد از چند لحظه از طرف ماژول به ما ارسال می‌شود.

+SMTPFTP: 1,1360

عدد 1360 نشان دهنده حداکثر بایت مجاز این فایل می‌باشد. پس باید برای ارسال، تعداد بایت های فایل متن خود را مشخص کنیم.

تنظیم حجم بایت فایل متن ارسالی:

در این حالت با استفاده از دستور زیر اندازه فایل را مشخص می‌کنیم. طبق پاسخ ماژول در مرحله قبل حداکثر باید 1360 بایت باشد. در اینجا بجای “11” حجم فایل خود را وارد کنید.

AT+SMTPFT=11

بعد از ارسال دستور بالا ماژول پاسخ زیر را خواهد داد.

+SMTPFT: 2,11

در این حالت بلافاصله بعد از دریافت پاسخ بالا، متن را با سایز مشخص شده در مرحله قبل وارد کنید.

Attachment:
OK

با وارد کردن و زدن اینتر پاسخ ماژول شبیه زیر خواهد بود که بیانگر حداکثر طول مجاز است.

+SMTPFT: 1,1360

در نهایت با ارسال دستور زیر ارتباط با وب سرور ایمیل قطع خواهد شد.

AT+SMTPFT=0
OK

بعد از چند لحظه پاسخ زیر از طرف ماژول به ما نشان داده خواد شد که بیانگر موفقیت آمیز بودن ارسال ایمیل است.

+SMTPSEND: 1
ایمیل با فایل پیوست ارسال شده با ماژول SIM800
ایمیل با فایل پیوست ارسال شده با ماژول SIM800
ایمیل دریافت شده
ایمیل دریافت شده
متن داخل فایل ارسال شده در ایمیل از طرف ماژول SIM800
متن داخل فایل ارسال شده در ایمیل از طرف ماژول SIM800

خواندن ایمیل

در مراحل قبلی نحوه ارسال ایمیل بررسی شد. در این قسمت خواندن ایمیل های دریافتی بررسی خواهد شد. در ابتدا مثل قبل ابتدا اینترنت ماژول را با دستور زیر وصل خواهیم کرد.

AT+SAPBR=1,1

در صورت موفقیت آمیز بودن کانکشن، ماژول OK را در پاسخ ارسال خواهد کرد. پروتکل دریافت و خواندن ایمیل POP3 می‌باشد. بر اساس تنظیمات گوگل نام سرویس دریافت ایمیل برابر POP.GMAIL.COM با شماره پورت 995 است.

تنظیم حالت ایمیل:

AT+EMAILCID=1

تنظیم بازه پاسخ دهی سرور:

مشابه مرحله قبل از همان دستور استفاده خواهیم کرد.

AT+EMAILTO=30
OK

تنظیم ایمیل در حالت با امنیت بیشتر یا SSL:

AT+EMAILSSL=1

OK

بعد از اعمال تنظیمات، با استفاده از دستور زیر به ترتیب وب سرور ایمیل، نام کاربری (ایمیل)، رمز و شماره پورت را وارد خواهیم کرد.

AT+POP3SRV="pop.gmail.com","email","password",995

لاگین کردن به اکانت:

بعد از ارسال دستور بالا باید به اکات خود لاگین کنیم. برای اینکار از دستور زیر استفاده می‌کنیم.

AT+POP3IN

OK
+POP3IN: 1

در صورتی که ارتباط موفقیت آمیز بوده باشد ماژول “POP3IN: 1+” را به ما پاسخ خواهد داد.

خواندن ایمیل مورد نظر:

بعد از موفقیت آمیز بودن مرحله قبل، باید شماره ایمیلی که برای خواندن آن مورد نظر داریم را وارد کنیم. ترتیب شمارش این ایمیل ها از یک شروع می‌شود الی آخر. برای وارد کردن شماره ایمیل آن را در دومین پارامتر دستور زیر وارد کنید. بعنوان مثال عدد 10 که بیانگر ایمیل شماره 10 من هست.

AT+POP3CMD=4,10

OK 
+POP3CMD: 1

بعد از ارسال دستور بالا، ماژول در پاسخ عبارت زیر را به ما خواهد داد. عدد 1907 بیانگر حداکثر تعدا بایت قابل خواندن توسط ماژول می‌باشد.

+POP3READ: 3,1907

این دستور چند بار از طرف ماژول ارسال می‌شود. پس باید با دریافت آن بلافاصله دستور AT+POP3READ=1500 را ارسال کنیم. عدد 1500 بیانگر تعداد بایتی است که می‌خواهیم بخوانیم. بعد از طی این مرحله متن پیام نمایش داده خواهد شد. برای خروج و قطع ارتباط با سرور ایمیل از دستور AT+POP3OUT استفاده می‌شود.


نتیجه گیری

در این قسمت مفصل به نحوه ارسال و دریافت ایمیل با ماژول SIM800 پرداخته شد. ارسال و دریافت ایمیل کاربرد های متنوعی دارد که متناسب با نیاز پروژه می‌توانیم استفاه نماییم.

امیدوارم از این آموزش کمال بهره را برده باشید. در صورتی که هرگونه نظر یا سوال داشتید درباره این آموزش لطفا اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش را پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.

۷ دیدگاه برای “راه اندازی ماژول SIM800 قسمت 11 – دریافت و ارسال ایمیل پیوست دار

  1. سلام من این کار رو کردم و ماژول بهم پیام موفقیت آمیز ارسال ایمیل داد. ولی بجای متن پیام تو گوشیم یه ایمیلی اومد گفت تلاش ورود به سیستم مسدود شد.
    چجوری مشکلش رو حل کنم؟

    1. سلام، ایمیلی که دریافت کردید مبنی بر ورود به سیستم، به همون ایمیلی که ادرس ایمیل فرستنده را تنظیم میکردید اومده درسته؟

  2. با عرض سلام و تشکر بابت مطالب مفیدتون.
    بنده یه سوال داشتم، فرض کنید میخواهیم دستگاهی بسازیم که بعد از جمع آوری یک سری اطلاعات از سنسورها، آنها را در قالب یک ایمیل برای آدرس ایمیلی که کاربر مصرف کننده مثلا از قبل توسط پیامک به دستگاه معرفی کرده ارسال کند. بنده به عنوان فروشنده دستگاه یک طرف ماجرا هستم، خریدار هم به عنوان مصرف کننده در سوی دیگر دستگاه.
    همانطور که میدانیم با وصل کردن یک مبدل سریال به یو اس بی براحتی میتوان تمام اطلاعات ارسالی از طریق میکرو به ماژول را مشاهده کرد و عملا اطلاعات ایمیل فرستنده از قبیل نام کاربری و رمز آن (که من فروشنده مثلا روی میل سرور خودم ساخته ام یا از جی میل استفاده کرده ام) در دسترس خواهد بود و شخص ثالث براحتی میتواند آنرا عوض کند و دستگاه های دیگر من هم که از ایمیل فرستنده یکتا استفاده میکنند قادر به ارسال ایمیل نخواهند بود.
    راه حل این مشکل و رفع این باگ امنیتی رو میفرمایید؟ آیا در این مورد تجربه یا موردی داشته اید؟

    1. سلام، خواهش می‌کنم سلامت باشید.
      این موردی که فرمودید هم نکته قشنگی بود و هم سوال قشنگی. باعث شد که بقیه دوستان هم به این مورد دقت کنند که امکان دریافت دیتا ها از طریق سریال بین ماژول و میکرو هست. در هر صورت برای پایبندی به اصل محرمانگی و عدم افشای اطلاعات ما نیاز به رمزنگاری داریم و استفاده از پروتکل های مطرح آن مثل AES و… .
      این مورد در مواردی صدق میکنه که دو دستگاه (میکروکنترلر و…) ما یا بیشتر، دارای کلید یکسان برای رمزنگاری و رمزگشایی داشته باشند. این رو میشه با دو میکروکنترلر و ارتباط سریال بین آنها پیاده کرد. اما بین میکر و ماژول مثلا GSM و یا غیره نه!
      چرا؟ چون که بعنوان مثال دستور << AT+SMTPAUTH=1,"email","password" >> که برای وارد کردن آدرس و رمز ایمیل فرستنده هست را فرض کن رمز کردیم و برای ماژول میفرستیم. اما ماژول قابلیت رمزگشایی آن را دارد؟ قطعا نه چون قابلیت این مورد در آن فراهم نشده یا بهتر بگم علاوه بر عدم داشتن کلید برای رمزگشایی، قابلیت پیاده سازی الگوریتم رمزگشایی مشابه آنچه در سمت فرستنده اش اتفاق افتاده را هم ندارد. لذا نمیشه این کارو کرد. پس به محض ارسال دستور کد شده به ماژول، پاسخی نمیگیریم و کاری انجام نمیشه چون تعریف نشده است برای ماژول این دستور.
      این سوال شما یک موردی هست که جای تأمل داره و باید بررسی بشه چون همینطور که گفتم ماژول نمیتونه دیکد کردن رو انجام بده. شاید سایر دوستان نظری داشته باشند یا تجربه ای. من ایده به ذهنم میرسه برای اینکار ولی صرفا یه فرضیه است و باید تست اش کنم.

      1. البته من تو ذهنم بود که از قابلیت EAT ماژول استفاده کنم و برنامه رو توی حافظه داخلی ماژول بنویسم ولی راستش چون منابع و کامپایلر راحتی در دسترس نبود بیخیالش شدم.کسی از دوستان در زمینه EAT تجربه ای داره یا تاحالا برنامه ای داخل خود حافظه ماژول نوشته ممنون میشم به تجربیاتشون رو به اشتراک بزارن.

        1. بله این گزینه خوبی هست اما باید به محدود فضا هم توجه کنید. متاسفانه هیچ دیتا بدرد بخوری یا رفرنس خوبی در دسترس نیست برای ماژول های سیمکام. در مقابل برای کوئیکتل منابع و مثال های عالی و خیلی خوبی وجود دارد. بتویند از این برند هم استفاده کنید خیلی میتونه گزینه خوبی باشد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *