اگر در حال ساختن یک برنامه Django هستید و می خواهید با کاربران ارتباط برقرار کنید – شاید برای استقبال از آنها ، ارسال پیوندهای تنظیم مجدد رمز عبور یا ارائه به روزرسانی ها – ایمیل یکی از بهترین ابزاری است که به دست آورده اید.

راه اندازی ایمیل در Django ممکن است در ابتدا مشکل به نظر برسد ، اما پس از قطع کردن آن ، بسیار ساده است.

من یک دسته از مردم را از طریق آن قدم گذاشته ام و تا پایان این راهنما ، در مورد ارسال ایمیل از پروژه های Django خود اطمینان خواهید داشت.

چرا ایمیل در برنامه های وب اهمیت دارد

ایمیل فقط یک چیز خوب نیست-برای ارتباط ، اعتماد و تجربه کاربر ضروری است.

به آن فکر کنید:

  • چگونه حساب شخصی را تأیید می کنید؟ ایمیل

  • چگونه به کاربران کمک می کنید تا رمزعبور را دوباره تنظیم کنند؟ ایمیل

  • آیا می خواهید به روزرسانی ، هشدارها یا گزارش های سفارشی ارسال کنید؟ شما آن را حدس زده اید – ایمیل.

به همین دلیل ارزش آن را دارد که به درستی تنظیم کنید.

آنچه در این راهنما می آموزید

این چیزی است که من شما را طی می کنم:

  • روش تنظیم ایمیل در جنگو

  • روش انتخاب بین تنظیمات توسعه و تولید

  • روش ارسال ایمیل های اساسی

  • روش ارسال ایمیل های HTML و چند بخشی

  • روش استفاده از الگوهای ایمیل

  • اشتباهات رایج برای جلوگیری از

بیایید وارد آن شویم.

روش ارسال ایمیل با Django

در اینجا روش شروع کار آمده است.

مرحله 1: تنظیمات ایمیل خود را در Django پیکربندی کنید

جنگو از EmailMessage کلاس و داخلی send_mail عملکرد برای ارسال ایمیل. اما ابتدا باید به Django بگویید که چگونه به ارائه دهنده ایمیل خود متصل شود.

پیشنهاد می‌کنیم بخوانید:  آرگومان های با طول متغیر در پایتون با *args و **kwargs

خود را باز کنید settings.py پیکربندی پشتیبان ایمیل خود را اضافه کنید.

در اینجا مثالی با استفاده از Gmail آورده شده است:

# settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@gmail.com'
EMAIL_HOST_PASSWORD = 'your_app_password'

مهم: اگر از Gmail استفاده می کنید ، باید رمزهای عبور برنامه را تنظیم کنید زیرا گذرواژه های حساب معمولی دیگر با SMTP کار نمی کنند.

برای توسعه

اگر فقط ایمیل های محلی را آزمایش می کنید و نمی خواهید واقعاً چیزی ارسال کنید ، Django این کار را آسان می کند.

از این در خود استفاده کنید settings.py:

# Settings.oy
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

این ایمیل را به شما چاپ می کند console به جای ارسال آنها ایده آل برای اشکال زدایی!

مرحله 2: ارسال یک ایمیل ساده

اکنون که تنظیمات شما در حال اجرا است ، می توانید با چند خط کد یک ایمیل ارسال کنید.

در اینجا یک مثال سریع با استفاده از Django وجود دارد send_mail عملکرد:

# Views.py or anywhere you want this logic to live

from django.core.mail import send_mail

send_mail(
    'Welcome to My Site!',
    'Thanks for signing up. Glad to have you!',
    'from@example.com',        # From
    ['to@example.com'],        # To
    fail_silently=False,
)

و درست مثل همین ، شما یک ایمیل ارسال کرده اید

مرحله 3: ارسال ایمیل HTML

متن ساده اشکالی ندارد ، اما ایمیل های HTML بهتر به نظر می رسند. Django به شما امکان می دهد پیام های چند بخشی را ارسال کنید که شامل متن ساده و HTML است.

در اینجا چگونه:



from django.core.mail import EmailMultiAlternatives

subject = 'Welcome!'
text_content = 'Thanks for joining us.'
html_content = '<p>Thanks for <strong>joining</strong> us.</p>'

msg = EmailMultiAlternatives(subject, text_content, 'from@example.com', ['to@example.com'])
msg.attach_alternative(html_content, "text/html")
msg.send()

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

مرحله 4: برای ایمیل های بهتر از الگوهای استفاده کنید

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

یک فایل مانند ایجاد کنید welcome_email.html در پوشه قالب های خود:

<!-- templates/welcome_email.html -->
<h2>Hello {{ user.first_name }}!</h2>
<p>Welcome to our platform. We’re happy you’re here.</p>

سپس ، آن را در ایمیل خود بارگیری و ارائه دهید:

from django.template.loader import render_to_string

html_message = render_to_string('welcome_email.html', {'user': user})

می توانید این را به EmailMultiAlternatives راه اندازی که در بالا استفاده کردیم.

پیشنهاد می‌کنیم بخوانید:  درون یابی رشته پایتون با عملگر درصد (%)

مرحله 5: مشکلات رایج و روش جلوگیری از آنها

در اینجا چند مورد وجود دارد که من دیده ام که مردم در آن قرار دارند:

  1. رمزهای عبور برنامه نادرست: اگر از Gmail استفاده می کنید و این کار را ناکام می کند ، تنظیم رمز عبور برنامه خود را دوبار بررسی کنید.

  2. سردرگمی بندر و TLS: برای بیشتر ارائه دهندگان SMTP:

    • از بندر استفاده کنید 587 با EMAIL_USE_TLS = True

    • یا بندر 465 با EMAIL_USE_SSL = True

  3. ایمیل رفتن به هرزنامه: از نام فرستنده واقعی استفاده کنید و از خطوط موضوع اسپم خودداری کنید. اگر می خواهید به صورت زنده تنظیم کنید ، سوابق SPF ، DKIM و DMARC را تنظیم کنید. در اینجا یک راهنمای ساده وجود دارد روی احراز هویت ایمیل.

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

برای آزمایش ایمیل در یک محیط ماسهبازی می توانید از MailTrap یا PaperCut SMTP استفاده کنید.

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

متداول

آیا می توانم با ایمیل های django پیوست ارسال کنم؟

بله استفاده کردن msg.attach() با EmailMessage یا EmailMultiAlternativesبشر در اینجا یک مثال آورده شده است:

msg.attach('invoice.pdf', pdf_content, 'application/pdf')

تفاوت بین چیست send_mail وت EmailMessage؟

send_mail میانبر برای موارد استفاده ساده است. برای موارد پیچیده تر – مانند ایمیل های HTML ، پیوست ها یا هدرهای سفارشی – EmailMessage یا EmailMultiAlternatives بهتر است

چگونه ایمیل های فله ای ارسال کنم؟

از send_mass_mail() عملکرد یا حلقه را از طریق یک لیست و ارسال ایمیل به صورت جداگانه. اگر ایمیل های زیادی را ارسال می کنید ، بهتر است از ارائه دهنده خدمات ایمیل استفاده کنید (مانند SendGrid ، MailGun و SO روی) که از تحویل فله پشتیبانی می کند و محدودیت نرخ را کنترل می کند.

پایان

ایمیل یکی از آن ویژگی هایی است که به نظر می رسد کوچک است تا زمان شکسته شدن – یا تا زمانی که به آن نیاز دارید تا درخشش داشته باشید.

آیا شما آن را کار می کنید؟ عالی

هنوز گیر کرده است؟ نگران نباشید – این یکی از آن مواردی است که هر بار آسان تر می شود.

منابع بیشتر

اگر می خواهید با Django به ایمیل های عمیق تر شیرجه بزنید ، این پیوندها را بررسی کنید:

  • اسناد رسمی ایمیل Django

  • راهنمای Django Mailtrap

  • ادغام SendGrid Django

  • بسته الگوهای ایمیل Django