اتصال به ایمیل‌سرور در برنامه‌های Django


پروژه و کدهای مورد استفاده در ویدیوی فوق در اینجا قابل مشاهده و دسترسی هستند.

برای استفاده از سرویس ایمیل در برنامه‌های Django، کافیست تا طبق مستندات SMTP، یک دسترسی SMTP و طبق مستندات افزودن نشانی، یک نشانی برای ایمیل‌سرور خود، ایجاد کنید. در ادامه نیز، بایستی اطلاعات مربوط به ایمیل‌سرور خود را به متغیرهای محیطی برنامه خود، اضافه کنید؛ به عنوان مثال:

کپی
MAIL_HOST=smtp.c1.liara.email
MAIL_PORT=587
MAIL_USER=hopeful_zhukovsky_9daqpv
MAIL_PASSWORD=fbef30d7-f852-428e-9573-bc73381c7d4d
MAIL_FROM_ADDRESS=info@example.com

مقدار فیلد MAIL_FROM_ADDRESS باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.

حال، بایستی قطعه کدی مشابه قطعه کد زیر را به فایل settings.py خود، اضافه کنید:

کپی
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = os.getenv('MAIL_HOST')
EMAIL_PORT = os.getenv('MAIL_PORT')
EMAIL_HOST_USER = os.getenv('MAIL_USER')
EMAIL_HOST_PASSWORD = os.getenv('MAIL_PASSWORD')
EMAIL_USE_TLS = True  # Use TLS encryption
EMAIL_FROM_ADDRESS = os.getenv('MAIL_FROM_ADDRESS')

برای ارسال امن‌تر ایمیل‌ها، می‌توانید مقدار Port را بر روی 465 قرار دهید تا به جای STARTTLS، از TLS استفاده شود.

تمامی کارها انجام شده است و شما می‌توانید از ایمیل‌سرور خود استفاده کنید؛ به عنوان مثال، می‌توانید یک app جدید ایجاد کنید و views.py آن را همانند قطعه کد زیر، بنویسید:

کپی
from django.core.mail import EmailMessage
from django.http import HttpResponse
from django.conf import settings

def send_test_email(request):
    subject = 'Test Email from Django'
    message = 'This is a test email sent from Django using SMTP on Liara server.'
    recipient_list = ['recipient@example.com']
    
    email = EmailMessage(
        subject,
        message,
        settings.EMAIL_FROM_ADDRESS,
        recipient_list,
        headers={"x-liara-tag": "test-tag"} # using liara tag feature,
    )

    
    email.send(fail_silently=False)
    return HttpResponse('Test email sent successfully!')