Настройка почтового сервиса SMTP для Yandex в Django
В этой статье мы рассмотрим, как настроить почтовый сервис SMTP для Yandex в Django 4.2. Это может быть полезно, если вы хотите отправлять электронные письма из своего приложения для подтверждения регистрации пользователя или рассылки писем, используя почтовый сервер Yandex.
Шаг 1: Получите данные для доступа к Yandex SMTP
Первым шагом необходимо получить данные для доступа к SMTP серверу Yandex.
Для этого вам нужно зайти в свою почту на mail.yandex.ru, если у вас нет почты, вам необходимо ее зарегистрировать. Сохраняем или запоминаем логин вида email@yandex.ru
в любое место, он нам понадобится.
Нам необходимо разрешить доступ к почтовому ящику с помощью почтовых клиентов, установив галочку напротив настроек.
Чтобы не столкнуться с ошибкой smtplib.SMTPAuthenticationError: (535, b'5.7.8 Error: authentication failed: Invalid user or password! 123456-SuAdEgdS')
и правильно настроить SMTP для Yandex нам необходимо сгенерировать пароль для приложения, чтобы мы смогли аутентифицироваться из нашего проекта на Django, для этого переходим в свой Яндекс ID - id.yandex.ru, далее ищем заголовок Безопасность -> Доступы -> Пароли приложений
В этом меню нам нужно создать пароль приложения для почты IMAP, POP3 SMTP. Нажимаем.
Придумываем имя пароля, можно любое, нажимаем далее.
После нажатия на далее нам сервис генерирует пароль для использования в Django приложении, его запоминаем или сохраняем в удобное место, он нам понадобится для настройки аутентификации.
Шаг 2: Настройте почтовый сервис SMTP в Django
Теперь, когда у вас есть данные для доступа к SMTP, вы можете настроить его в Django. Для этого вам нужно отредактировать файл settings.py в вашем проекте.
Добавьте следующие настройки в конец файла settings.py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.yandex.ru'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_HOST_USER = 'your_email@yandex.ru'
EMAIL_HOST_PASSWORD = 'your_yandex_smtp_password'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
EMAIL_ADMIN = EMAIL_HOST_USER
Обязательно должны быть SERVER_EMAIL и EMAIL_ADMIN, иначе письма не отправятся.
Yandex SMTP также работает со следующими настройками:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.yandex.ru'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@yandex.ru'
EMAIL_HOST_PASSWORD = 'your_yandex_smtp_password'
EMAIL_SERVER = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
EMAIL_ADMIN = EMAIL_HOST_USER
Замените your_email@yandex.ru
на вашу электронную почту Yandex, а your_yandex_smtp_password
на пароль, который вы сгенерировали для приложения.
Шаг 3: Проверьте работу отправки писем
Чтобы проверить, работает ли ваша настройка, вы можете отправить тестовое письмо из Django. Для этого откройте оболочку Django в командной строке с помощью команды: py manage.py shell
, далее введите следующий код:
from django.core.mail import send_mail
send_mail(
'Test Subject',
'Test message body',
'your_email@yandex.ru',
['recipient@example.com'],
fail_silently=False,
)
Замените "your_email@yandex.ru"
на вашу электронную почту Yandex и "recipient@example.com"
на адрес электронной почты, на который вы хотите отправить тестовое письмо. Ответом программы будет 1
(True)
Если все настроено правильно, вы должны получить тестовое письмо на указанный адрес электронной почты.