آموزش ارسال ایمیل با پایتون در برد رزبری پای

در این راهنما، خواهید آموخت که چگونه از طریق Raspberry Pi خود با استفاده از یک اسکریپت پایتون و سرورهای SMTP ایمیل ارسال کنید. مثالی که ارائه میکنیم را میتوان بر روی هر دستگاه دیگری که پایتون را اجرا میکند نیز اجرا کرد.
پیشنیاز ها
باید بدانید که چگونه فایلهای پایتون را روی Raspberry Pi خود اجرا و ایجاد کنید. ما معمولاً برنامهنویسی روی Raspberry Pi را از طریق SSH با استفاده از افزونهای در VS Code انجام میدهیم. یک آموزش جامع در این زمینه داریم: آموزش پروگرام رزبری پای با VS Code
معرفی سرور های SMTP
SMTP مخفف Simple Mail Transfer Protocol است و یک استاندارد اینترنتی برای ارسال ایمیل میباشد. با استفاده از کتابخانه smtplib در پایتون، میتوانید به راحتی از Raspberry Pi خود ایمیل ارسال کنید. این کتابخانه یک شیء جلسه کلاینت SMTP تعریف میکند که میتوان از آن برای ارسال ایمیل استفاده کرد. برای اطلاعات بیشتر اینجا را ببینید.
برای ارسال ایمیل با استفاده از اسکریپت پایتون در Raspberry Pi، شما به یک ایمیل فرستنده و اطلاعات تنظیمات سرور SMTP ایمیل خود نیاز دارید. در ادامه تنظیمات محبوبترین ارائهدهندگان ایمیل را مشاهده میکنید.
تنظیمات سرور SMTP جیمیل
اگر از حساب Gmail استفاده میکنید، جزئیات سرور SMTP به شرح زیر است:
- SMTP Server: smtp.gmail.com
- SMTP username: Complete Gmail address
- SMTP password: Your Gmail password
- SMTP port (TLS): 587
- SMTP port (SSL): 465
- SMTP TLS/SSL required: yes
تنظیمات سرور SMTP Outlook
برای حسابهای Outlook، تنظیمات سرور SMTP به شرح زیر است:
- SMTP Server: smtp.office365.com
- SMTP Username: Complete Outlook email address
- SMTP Password: Your Outlook password
- SMTP Port: 587
- SMTP TLS/SSL Required: Yes
تنظیمات سرور SMTP Live یا Hotmail
برای حسابهای Live یا Hotmail، تنظیمات سرور SMTP به شرح زیر است:
- SMTP Server: smtp.live.com
- SMTP Username: Complete Live/Hotmail email address
- SMTP Password: Your Windows Live Hotmail password
- SMTP Port: 587
- SMTP TLS/SSL Required: Yes
اگر از ارائه دهنده ایمیل دیگری استفاده میکنید، باید تنظیمات سرور SMTP آن را جستجو کنید.
ایمیل فرستنده (حساب جدید)
توصیه میکنیم یک حساب ایمیل جدید برای ارسال ایمیلها به آدرس ایمیل شخصی خود ایجاد کنید. از ایمیل شخصی اصلی خود برای ارسال ایمیل با اسکریپت پایتون استفاده نکنید. اگر مشکلی در کد شما پیش بیاید یا به اشتباه درخواستهای زیادی ارسال کنید، ممکن است حساب شما موقتاً مسدود شود.
ما از یک حساب Gmail جدید برای ارسال ایمیلها استفاده خواهیم کرد، اما میتوانید از هر ارائهدهنده ایمیل دیگری هم استفاده کنید. ایمیل گیرنده میتواند ایمیل شخصی شما باشد بدون هیچ مشکلی.
یک حساب ایمیل جدید برای ارسال ایمیل با ESP32/ESP8266 ایجاد کنید. اگر میخواهید از حساب Gmail استفاده کنید، از این لینک برای ایجاد یک حساب جدید استفاده کنید.
https://mail.google.com/mail/&ogbl
ایجاد رمز عبور اپلیکیشن
برای اینکه Raspberry Pi بتواند با حساب Gmail شما ایمیل ارسال کند، نیاز به ایجاد یک رمز عبور اپلیکیشن دارید. رمز عبور اپلیکیشن یک کد 16 رقمی است که به یک برنامه یا دستگاه با امنیت کمتر اجازه دسترسی به حساب گوگل شما را میدهد. برای اطلاعات بیشتر درباره ورود با رمز اپلیکیشن اینجا را ببینید.
رمز عبور اپلیکیشن فقط با حسابهایی قابل استفاده است که تأیید دو مرحلهای فعال دارند.
- حساب Google خود را باز کنید.
- در پنل ناوبری، گزینه Security را انتخاب کنید.
- زیر بخش “Signing in to Google”، گزینه 2-Step Verification > Get started را انتخاب کنید.
- مراحل نمایش داده شده روی صفحه را دنبال کنید.
پس از فعالسازی تأیید دو مرحلهای، میتوانید رمز عبور اپلیکیشن ایجاد کنید.
- حساب Google خود را باز کنید.
- در پنل جستجو، App Passwords را جستجو کنید.
- منوی App Passwords را باز کنید.

- به آن یک نام بدهید، برای مثال Raspberry Pi، سپس روی Create کلیک کنید.

یک پنجره ظاهر میشود که حاوی رمز عبوری است که برای ارسال ایمیل با Raspberry Pi استفاده خواهید کرد. این رمز را ذخیره کنید، زیرا بعداً به آن نیاز خواهید داشت.

اکنون باید یک رمز عبور اپلیکیشن داشته باشید که بتوانید در اسکریپت پایتون خود برای ارسال ایمیل استفاده کنید.
اگر از ارائهدهنده ایمیل دیگری استفاده میکنید، نحوه ایجاد رمز اپلیکیشن آن را بررسی کنید. با جستجوی سریع “your_email_provider + create app password” در گوگل، میتوانید دستورالعملها را پیدا کنید.
اسکریپت ارسال ایمیل پایتون
یک فایل پایتون جدید با نام send_email.py ایجاد کنید و کد زیر را در آن کپی کنید.
شما باید جزئیات ایمیل فرستنده و ایمیل گیرنده را وارد کنید.
import smtplib
from email.message import EmailMessage
# تنظیم ایمیل فرستنده و رمز عبور و ایمیل گیرنده
from_email_addr ="REPLACE_WITH_THE_SENDER_EMAIL"
from_email_pass ="REPLACE_WITH_THE_SENDER_EMAIL_APP_PASSWORD"
to_email_addr ="REPLACE_WITH_THE_RECIPIENT_EMAIL"
# ایجاد یک شیء پیام
msg = EmailMessage()
# تعیین محتوای ایمیل
body ="Hello from Raspberry Pi"
msg.set_content(body)
# تعیین فرستنده و گیرنده
msg['From'] = from_email_addr
msg['To'] = to_email_addr
# تعیین موضوع ایمیل
msg['Subject'] = 'TEST EMAIL'
# اتصال به سرور و ارسال ایمیل
# خط زیر را با اطلاعات سرور SMTP ارائهدهنده خود ویرایش کنید
server = smtplib.SMTP('smtp.gmail.com', 587)
# در صورتی که ارائهدهنده ایمیل شما از TLS استفاده میکند، خط زیر را فعال کنید
server.starttls()
# ورود به حساب ایمیل
server.login(from_email_addr, from_email_pass)
# ارسال پیام
server.send_message(msg)
print('Email sent')
# قطع ارتباط با سرور
server.quit()
نحوه عملکرد کد
در این بخش، یاد خواهید گرفت که کد چگونه کار میکند و چه تغییراتی برای اجرای آن نیاز است.
ابتدا کتابخانههای مورد نیاز برای عملکرد SMTP و مدیریت ایمیل را وارد میکنید: smtplib و کلاس EmailMessage از ماژول email.message.
import smtplib from email.message import EmailMessage
سپس متغیرهایی برای ایمیل فرستنده، رمز عبور اپلیکیشن آن و ایمیل گیرنده ایجاد میکنید. توصیه میشود برای دریافت اعلانها، از یک ایمیل دوم استفاده کنید تا دسترسی برنامههای کمامنیت به حساب اصلی شما محدود شود.
from_email_addr ="REPLACE_WITH_THE_SENDER_EMAIL" from_email_pass ="REPLACE_WITH_THE_SENDER_EMAIL_APP_PASSWORD" to_email_addr ="REPLACE_WITH_THE_RECIPIENT_EMAIL"
یک شیء EmailMessage به نام msg ایجاد میکنید که ویژگیهای پیام ایمیل را مدیریت میکند.
msg = EmailMessage()
در خطوط بعدی محتوای ایمیل را تنظیم میکنید. میتوانید متن را به هر چیزی که میخواهید تغییر دهید.
body ="Hello from Raspberry Pi" msg.set_content(body)
سپس فرستنده و گیرنده را در ویژگیهای پیام ایمیل مشخص میکنید.
msg['From'] = from_email_addr msg['To'] = to_email_addr
خط بعدی موضوع ایمیل را تعیین میکند و میتوانید آن را تغییر دهید.
msg['Subject'] = 'TEST EMAIL'
سپس ارتباط با سرور SMTP برقرار میشود. آدرس سرور ارائهدهنده ایمیل را به عنوان آرگومان اول smtplib.SMTP() و پورت را به عنوان آرگومان دوم وارد کنید.
server = smtplib.SMTP('smtp.gmail.com', 587)
در این اسکریپت از سرور SMTP و پورت Gmail استفاده شده است. اگر ارائهدهنده دیگری دارید، مقادیر را مطابق آن تغییر دهید.
تابع server.starttls() برای ارائهدهندگانی که از TLS برای رمزنگاری پیامها استفاده میکنند لازم است (که تقریباً تمام ارائهدهندگان ایمیل از آن استفاده میکنند). اگر ارائهدهنده شما TLS ندارد، میتوانید آن خط را حذف یا کامنت کنید.
server.starttls()
سپس اسکریپت وارد حساب ایمیل فرستنده میشود و پیام را ارسال میکند.
server.send_message(msg)
در نهایت ارتباط با سرور قطع میشود.
server.quit()
نحوه ارسال ایمیل با پایتون
فایل پایتون خود را ذخیره کنید و سپس آن را روی Raspberry Pi اجرا کنید. در دایرکتوری فایل پروژه، دستور زیر را اجرا کنید (نام فایل خود را جایگزین کنید):
python send_email.py
پس از اجرای اسکریپت، باید یک ایمیل از Raspberry Pi روی حساب ایمیل خود دریافت کنید.

در این آموزش، یاد گرفتید که چگونه با استفاده از Raspberry Pi و یک اسکریپت پایتون ایمیل ارسال کنید. این مثال همچنین با سایر بردها و دستگاههایی که از Python 3 پشتیبانی میکنند نیز سازگار است.







