تنظیمات smtp در فریم ورک جنگو برای ارسال ایمیل
برای ارسال ایمیل در پروژه جنگو ابتدا می بایست اکانت ایمیلی را در هاست خود ایجاد نموده باشید که به همین منظور میتوانید از آموزش ساخت اکانت ایمیل در سی پنل و روش دسترسی به آن استفاده کنید.
پس از ایجاد اکانت، می بایست تنظیمات مربوط به smtp را به فایل settings.py در پروژه اضافه نمایید. برای انجام اینکار بعد از ورود به هاست، از طریق File Manager وارد پوشه پروژه شده و با کلیک راست روی فایل "settings.py" گزینه "Edit" را برای ویرایش انتخاب نمایید.
تصویر(1)
سپس کدهای زیر را به فایل مذکور اضافه کنید (پوشه پروژه، پوشه ای است که در زمان تعریف پروژه ایجاد نموده اید.)
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = ' mail.example.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
EMAIL_HOST_USER = 'user@example.com'
EMAIL_HOST_PASSWORD = 'mail-password'
DEFAULT_FROM_EMAIL = 'user@example.com'
در این قطعه کد لازم است تا به جای "example.com" حتما نام دامنه خود را وارد نمایید.
-
EMAIL_BACKEND: این گزینه تعیین میکند که Django از کدام سرویس ارسال ایمیل استفاده کند.
-
EMAIL_HOST: این گزینه آدرس سرور SMTP را مشخص میکند. می توانید از آی پی هاست نیز استفاده نمایید.
-
EMAIL_PORT: شماره پورت سرور SMTP است. پورت 587 برای TLS یا 465 برای SSL تنظیم می گردد.
-
EMAIL_USE_TLS: این گزینه مشخص میکند که آیا باید از ارتباط امن TLS برای ارسال ایمیل استفاده شود یا خیر. اگر این گزینه True باشد، Django از TLS برای رمزگذاری ارتباط استفاده میکند که امنیت بیشتری دارد. معمولاً برای پورت 587 این گزینه True است.
-
EMAIL_USE_SSL: از True برای SSL یا False برای TLS استفاده می گردد.
-
EMAIL_HOST_USER: نام کاربری برای ورود به سرور SMTP است. این مورد معمولاً همان ایمیلی می باشد که از آن برای ارسال ایمیلها استفاده میکنید.
-
EMAIL_HOST_PASSWORD: رمز عبور حساب کاربری ایمیل برای ورود به سرور SMTP است. این مورد باید با رمز عبور اکانت ایمیل شما مطابقت داشته باشد.
-
DEFAULT_FROM_EMAIL: این گزینه، ایمیل پیشفرض برای ارسال ایمیلها می باشد. آدرس مذکور در صورتی که هنگام ارسال ایمیل، فرستندهای مشخص نشود، به طور خودکار استفاده می گردد.
تست ارسال ایمیل در جنگو
برای بررسی صحت عملکرد ارسال ایمیل، یک فایل جدید در پروژه خود ایجاد (برای مثال، emailtest.py) یا از کنسول جنگو استفاده کنید. سپس کد زیر را اجرا نمایید:
from django.core.mail import send_mail
send_mail(
subject='تست ارسال ایمیل',
message='این یک ایمیل آزمایشی است.',
from_email='user@example.com',
recipient_list=['recipient_email@example.com'],
fail_silently=False,
)
در صورت ارسال موفقیتآمیز ایمیل، مشخص میشود که تنظیمات شما به درستی پیکربندی شده است.
استفاده از ایمیل در پروژه
برای ارسال ایمیل در بخشهای مختلف پروژه خود نیز میتوانید از متدهای send_mail یا EmailMessage استفاده کنید. کلاس EmailMessage یک ابزار قدرتمند است که به شما این امکان را میدهد ایمیلهایی با ویژگیهای پیشرفته مانند پیوست، محتوای HTML و سایر تنظیمات خاص را ارسال کنید. برای ارسال ایمیل در جنگو با استفاده از این کلاس، ابتدا باید یک شیء از آن ایجاد کرده، گیرنده، موضوع و متن ایمیل را مشخص کنید و در نهایت با استفاده از متد send ایمیل را ارسال نمایید.
مثال با استفاده از EmailMessage:
from django.core.mail import EmailMessage
def send_custom_email():
email = EmailMessage(
subject='موضوع ایمیل',
body='متن ایمیل',
from_email='your_email@example.com',
to=['recipient_email@example.com'],
)
email.send()
تابع send_mail یک گزینه سادهتر نسبت به کلاس EmailMessage است و برای ارسال ایمیلهای متنی ساده بدون پیوست یا ویژگیهای پیشرفته مناسب می باشد.
برای ارسال ایمیل با استفاده از تابع send_mail، تنها کافی است گیرنده، موضوع، متن ایمیل، فرستنده و در صورت نیاز، لیستی از گیرندگان برای فیلد BCC را مشخص کنید.
مثال با استفاده از send_mail:
from django.core.mail import send_mail
subject = 'موضوع ایمیل'
message = 'این متن ایمیل است.'
from_email = 'your-email@example.com'
recipient_list = ['recipient1@example.com', 'recipient2@example.com']
send_mail(subject, message, from_email, recipient_list)