Django / Grade 1 / Send Email
Прежде всего добавьте в settings.py вашего проекта:
# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
В случае если вы хотите использовать отправку почты в тестовом режиме (в консоли), раскомментируйте первую строку.
Отправка почты в Django осуществляется с помощью send_mail, документация более-чем исчерпывающая.
Теперь перейдем к особенностям настройки отправки почты для разных почтовых служб.
Важный момент Раньше для отправки почты было необходимо указывать ваш пароль от ящика, теперь необходимо в настройках вашего почтового провайдера создать т.н. App Password, это сделано в целях безопасности. Если вы укажете пароль от вашей почты в send_mail(), то ничего не будет работать. Как это сделать для Mail.ru, Gmail и Яндекс.
Непосредственно настройки:
EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_USE_SSL = False EMAIL_HOST_USER = 'your@gmail.com' EMAIL_HOST_PASSWORD = 'app_password'
EMAIL_HOST = 'smtp.yandex.ru' EMAIL_PORT = 465 EMAIL_USE_TLS = False EMAIL_USE_SSL = True EMAIL_HOST_USER = 'your@yandex.ru' EMAIL_HOST_PASSWORD = 'app_password'
EMAIL_HOST = 'smtp.mail.ru' EMAIL_PORT = 2525 EMAIL_USE_TLS = True EMAIL_USE_SSL = False EMAIL_HOST_USER = 'your@mail.ru' EMAIL_HOST_PASSWORD = 'app_password'
Рекомендую хранить настройки в .env файле.
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
from django.core.mail import send_mail
from django.db.models.signals import post_save
from django.dispatch import receiver
# from celery import shared_task
from zayavki.models import Zayavka
from main.models import Realty, Manager
def send_email_to_manager(sender, instance, created, **kwargs):
if created:
manager_email = Manager.objects.get(id=instance.manager_id).email
subject = 'New zayavka'
message = f"новая заявка от {instance.name} / тема письма: {instance.question} / email отправителя: {instance.email}"
from_email = 'vetrof@yandex.ru'
recipient_list = [manager_email]
send_mail(subject, message, from_email, recipient_list)