آموزش

ارسال ایمیل با پایتون – آموزش همراه با مثال

برای ارسال ایمیل با پایتون به چه مواردی نیاز دارید؟ برخی از برنامه نویسی های اساسی و دانش وب به همراه مهارت های ابتدایی پایتون. فرض می کنیم شما قبلاً یک برنامه وب با این زبان ساخته اید و اکنون باید عملکرد آن را با اعلان ها یا ارسال ایمیل های دیگر گسترش دهید. این آموزش شما را در مهمترین مراحل ارسال ایمیل از طریق سرور SMTP راهنمایی می کند:

  1. پیکربندی سرور برای آزمایش (چرا مهم است؟)
    1. سرور SMTP محلی
    2. تست Mailtrap سرور SMTP
  2. انواع مختلف ایمیل: HTML ، همراه با تصاویر و پیوست ها
  3. ارسال چندین ایمیل شخصی (پایتون برای اتوماسیون ایمیل بسیار ارزشمند است)
  4. برخی از گزینه های محبوب ارسال ایمیل مانند Gmail و سرویس های ایمیل معاملاتی

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

اولین خبر خوب در مورد پایتون این است که یک ماژول داخلی برای ارسال ایمیل از طریق SMTP در کتابخانه استاندارد خود دارد. نصب و راه اندازی اضافی مورد نیاز نیست. با استفاده از عبارت زیر می توانید ماژول را وارد کنید:

import smtplib

برای اطمینان از اینکه ماژول به درستی وارد شده است و توضیحات کاملی از کلاس ها و آرگومان های آن را دریافت می کنید، در یک جلسه تعاملی پایتون تایپ کنید:

help(smtplib)

در مرحله بعدی، کمی در مورد سرور ها صحبت خواهیم کرد: انتخاب گزینه مناسب و پیکربندی آن.

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

هنگام ایجاد یک برنامه جدید یا اضافه کردن عملکرد، به ویژه هنگام انجام آن برای اولین بار آزمایش روی سرور محلی ضروری است. در اینجا لیستی کوتاه از دلایل آورده شده است:

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

سرور SMTP محلی

اگر کار در محیط محلی را ترجیح می دهید، سرور خطایاب محلی SMTP ممکن است یک گزینه باشد. برای این منظور، پایتون یک ماژول smtpd ارائه می دهد. این یک ویژگی DebuggingServer دارد که پیام هایی را که ارسال می کنید دور انداخته و آن ها را برای stdout چاپ می کند. با تمام سیستم های عملیاتی سازگار است.

سرور SMTP خود را روی localhost: 1025 تنظیم کنید.

python -m smtpd -n -c DebuggingServer localhost:1025

برای اجرای سرور SMTP در پورت 25، به مجوز های root نیاز دارید:

sudo python -m smtpd -n -c DebuggingServer localhost:25

به شما کمک می کند کد خود را بررسی کنید و در صورت وجود، مشکلات احتمالی را نشان می دهد. با این وجود به شما این امکان را نمی دهد که نحوه ارائه الگوی ایمیل HTML خود را بررسی کنید.

سرور SMTP جعلی

سرور SMTP جعلی از کار یک وب سرور شخص واقعی تقلید می کند. در مثال های بیشتر در این پست، ما از Mailtrap استفاده خواهیم کرد. فراتر از آزمایش ارسال ایمیل، به ما امکان می دهد نحوه ارائه و نمایش ایمیل را بررسی کنیم، داده های خام پیام را بررسی کرده و همچنین گزارش هرزنامه را به ما ارائه می دهد. راه اندازی Mailtrap بسیار آسان است: شما فقط باید اعتبارنامه تولید شده توسط برنامه را کپی کرده و در جای خود جایگذاری کنید.

در اینجا نحوه مشاهده آن در عمل آمده است:

Mailtrap کار را حتی ساده تر می کند. به بخش Integrations در زبانه تنظیمات SMTP بروید و الگوی پیام آماده را برای استفاده آماده کنید که دارای اعتبار نامه Mailtrap در آن است. این ابتدایی ترین گزینه برای آموزش اسکریپت پایتون شماست که چه کسی چه چیزی را برای کسی ارسال می کند:

کد خیلی ساده به نظر می رسد، درست است؟ بیایید نگاهی دقیق به آن بیندازیم و برخی از موارد مدیریت خطا را اضافه کنیم (به # توضیحات بین آن رجوع کنید). برای گرفتن خطا، از بلوک های “try” و “except” استفاده می کنیم.

پس از دریافت نتیجه ارسال شده در Shell، باید پیام خود را در صندوق ورودی Mailtrap خود مشاهده کنید:

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

مرحله بعدی در تسلط بر ارسال ایمیل با پیوست فایل ها در پایتون است. پیوست ها هنوز هم اشیا M MIME هستند اما ما باید آن ها را با ماژول base64 رمزگذاری کنیم. چند نکته مهم در مورد پیوست ها:

  1. پایتون به شما امکان می دهد فایل های متنی، تصاویر، فایل های صوتی و حتی برنامه های کاربردی را پیوست کنید. شما فقط باید از کلاس ایمیل مناسب مانند email.mime.audio.MIMEAudio یا email.mime.image.MIMEImage استفاده کنید.
  2. در مورد اندازه فایل به یاد داشته باشید: ارسال فایل های بالای 20 مگابایت یک عمل بد است. در ایمیل های معاملاتی، فایل های PDF بیشترین استفاده را دارند: ما معمولاً رسید، بلیط، کارت پرواز، تأیید سفارش و … دریافت می کنیم، بنابراین بیایید نحوه ارسال کارت ورود به سیستم را به عنوان یک فایل PDF بررسی کنیم.

:Input

:Output

برای پیوست کردن چندین فایل، می توانید چندین بار از روش () message.attach استفاده کنید.

نحوه ارسال ایمیل با پیوست تصویر

تصاویر حتی اگر بخشی از متن پیام باشند، پیوست نیز هستند. سه نوع از آن ها وجود دارد: پیوست های CID (تعبیه شده به عنوان یک شی MIME)، تصاویر base64 (تعبیه داخلی) و تصاویر لینک داده شده. بیایید به مثال ها بپردازیم. برای افزودن پیوست CID، ما یک پیام چند بخشی MIME با مولفه MIMEImage ایجاد خواهیم کرد:

:Output

تصویر CID هم به عنوان بخشی از پیام HTML و هم به عنوان پیوست نشان داده می شود. پیام های با این نوع تصویر معمولاً به عنوان اسپم در نظر گرفته می شوند: برای مشاهده میزان هرزنامه و توصیه های مربوط به بهبود آن، برگه Analytics را در Mailtrap بررسی کنید.

بسیاری از سرویس گیرندگان ایمیل – به ویژه Gmail – در بیشتر موارد تصاویر CID را نمایش نمی دهند. بنابراین بیایید نحوه درج یک تصویر رمزگذاری شده با base64 را بررسی کنیم. در اینجا ما از ماژول base64 استفاده خواهیم کرد و با همان فایل تصویری آزمایش خواهیم کرد:

:Output

اکنون تصویر در پیام HTML جاسازی شده است و به عنوان یک فایل پیوست در دسترس نیست. پایتون تصویر jpg ما را رمزگذاری کرده است و اگر به تب HTML Source برویم، رشته داده تصویر طولانی را در img src مشاهده خواهیم کرد.

نحوه ارسال چندین ایمیل

ارسال چندین ایمیل به گیرندگان مختلف و شخصی سازی آن ها نکته ویژه در مورد ایمیل ها در پایتون است. برای افزودن چندین گیرنده دیگر، می توانید آدرس آن ها را با کاما از هم جدا کنید، CC و BCC را اضافه کنید. اما اگر با ارسال ایمیل به صورت انبوه کار می کنید، پایتون با حلقه ها شما را نجات می دهد.

یکی از گزینه ها ایجاد پایگاه داده با فرمت .csv (فرض می کنیم در همان پوشه اسکریپت Python شما ذخیره شده باشد) است. ما اغلب نام خود را در نمونه های معاملاتی یا حتی تبلیغاتی مشاهده می کنیم. در اینجا نحوه ساخت آن با پایتون آورده شده است. بیایید لیست را در یک جدول ساده و فقط با دو ستون سازماندهی کنیم: نام و آدرس ایمیل. باید مانند مثال زیر باشد:

کد زیر فایل را باز می کند و سطر به سطر روی سطرهای آن حلقه می زند و مقدار {name} را از ستون “name” جایگزین می کند.

:Input

پس از اجرای اسکریپت، پاسخ زیر را دریافت می کنیم:

:Output

در صندوق ورودی Mailtrap ما دو پیام را می بینیم: یکی برای جان جانسون و دیگری برای پیتر پیترسون که به طور همزمان ارسال می شود:

ارسال ایمیل با پایتون از طریق Gmail

وقتی برای ارسال ایمیل به گیرنده های واقعی آماده شدید، می توانید سرور تولید خود را پیکربندی کنید. همچنین به نیاز ها، اهداف و تنظیمات شما بستگی دارد: localhost یا هر SMTP خارجی.

یکی از محبوب ترین گزینه ها Gmail است، بنابراین بیایید نگاهی دقیق به آن بیندازیم. ما اغلب می توانیم عناوینی مانند “نحوه راه اندازی حساب Gmail برای توسعه” را مشاهده کنیم. در واقع این بدان معنی است که شما یک حساب Gmail جدید ایجاد خواهید کرد و از آن برای یک هدف خاص استفاده خواهید کرد.

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

  • نام سرور = smtp.gmail.com
  • پورت = 465 برای اتصال SSL / TLS (ترجیحی)
  • یا پورت = 587 برای اتصال STARTTLS.
  • نام کاربری = آدرس ایمیل Gmail شما
  • گذرواژه = رمزعبور شما.

اگر تمایل به سادگی دارید، می توانید از Yagmail ،Gmail / SMTP اختصاصی استفاده کنید. این کار ارسال ایمیل را بسیار آسان می کند. فقط مثال های بالا را با چند خط کد مقایسه کنید:

مراحل بعدی با پایتون

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

مجموعه ای از چارچوب ها و کتابخانه های مختلف Python وجود دارد که ایجاد ظرافت و اختصاصی بودن برنامه ها را ایجاد می کند. به طور خاص، برخی از آن ها می توانند به بهبود تجربه شما در ساخت قابلیت ارسال ایمیل کمک کنند: محبوب ترین چارچوب ها عبارتند از:

  • Flask: که یک رابط ساده برای ارسال ایمیل – نامه ارائه می دهد.
  • Django: که می تواند یک گزینه عالی برای ساخت قالب های HTML باشد.
  • Zope: برای توسعه وب سایت مفید است.
  • Marrow Mailer: یک چارچوب اختصاصی تحویل نامه است که با اضافه کردن تنظیمات مختلف مفید است.
  • Plotly و Dash: می توانند در ارسال نامه ها و نمودار ها به شما کمک کنند

موفق باشید و فراموش نکنید که هنگام ارسال ایمیل های خود در امان بمانید!

منبع: thepythonguru.com

نمایش دیدگاه‌ها

منتشر شده توسط
f.hoseini_server