Настройка почтового сервиса SMTP для Yandex в Django
Django

Настройка почтового сервиса SMTP для Yandex в Django

Razilator

В этой статье мы рассмотрим, как настроить почтовый сервис 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. Нажимаем.

Почта IMAP, POP3, SMTP
Почта IMAP, POP3, SMTP

Придумываем имя пароля, можно любое, нажимаем далее.

Имя пароля
Имя пароля

После нажатия на далее нам сервис генерирует пароль для использования в Django приложении, его запоминаем или сохраняем в удобное место, он нам понадобится для настройки аутентификации.

Сгенерированный пароль для SMTP Django с Yandex
Сгенерированный пароль для SMTP Django с Yandex

Шаг 2: Настройте почтовый сервис SMTP в Django

Теперь, когда у вас есть данные для доступа к SMTP, вы можете настроить его в Django. Для этого вам нужно отредактировать файл settings.py в вашем проекте.

Добавьте следующие настройки в конец файла 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 также работает со следующими настройками:

settings.py
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, далее введите следующий код:

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)

Если все настроено правильно, вы должны получить тестовое письмо на указанный адрес электронной почты.

Пришедшее письмо на почту с помощью функции
Пришедшее письмо на почту с помощью функции
;