![Настройка почтового сервиса SMTP для Yandex в Django](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fthumbnails%2F2023%2F04%2F08%2Fimage-563298f867.png&w=3840&q=90)
Настройка почтового сервиса SMTP для Yandex в Django
В этой статье мы рассмотрим, как настроить почтовый сервис SMTP для Yandex в Django 4.2. Это может быть полезно, если вы хотите отправлять электронные письма из своего приложения для подтверждения регистрации пользователя или рассылки писем, используя почтовый сервер Yandex.
Шаг 1: Получите данные для доступа к Yandex SMTP
Первым шагом необходимо получить данные для доступа к SMTP серверу Yandex.
Для этого вам нужно зайти в свою почту на mail.yandex.ru, если у вас нет почты, вам необходимо ее зарегистрировать. Сохраняем или запоминаем логин вида email@yandex.ru
в любое место, он нам понадобится.
Нам необходимо разрешить доступ к почтовому ящику с помощью почтовых клиентов, установив галочку напротив настроек.
![Почтовые программы](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fuploads%2F2023%2F04%2F08%2Fb10e6eef08-uploaded-image.jpg&w=3840&q=75)
Чтобы не столкнуться с ошибкой smtplib.SMTPAuthenticationError: (535, b'5.7.8 Error: authentication failed: Invalid user or password! 123456-SuAdEgdS')
и правильно настроить SMTP для Yandex нам необходимо сгенерировать пароль для приложения, чтобы мы смогли аутентифицироваться из нашего проекта на Django, для этого переходим в свой Яндекс ID - id.yandex.ru, далее ищем заголовок Безопасность -> Доступы -> Пароли приложений
![Доступы](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fuploads%2F2023%2F04%2F08%2F3117a78dc4-uploaded-image.jpg&w=3840&q=75)
![Пароли приложений](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fuploads%2F2023%2F04%2F08%2F2971d28cfe-uploaded-image.jpg&w=3840&q=75)
В этом меню нам нужно создать пароль приложения для почты IMAP, POP3 SMTP. Нажимаем.
![Почта IMAP, POP3, SMTP](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fuploads%2F2023%2F04%2F08%2F950cc578d5-uploaded-image.jpg&w=3840&q=75)
Придумываем имя пароля, можно любое, нажимаем далее.
![Имя пароля](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fuploads%2F2023%2F04%2F08%2Fe849b94fb1-uploaded-image.jpg&w=3840&q=75)
После нажатия на далее нам сервис генерирует пароль для использования в Django приложении, его запоминаем или сохраняем в удобное место, он нам понадобится для настройки аутентификации.
![Сгенерированный пароль для SMTP Django с Yandex](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fuploads%2F2023%2F04%2F08%2F974cd3eb10-uploaded-image.jpg&w=3840&q=75)
Шаг 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)
Если все настроено правильно, вы должны получить тестовое письмо на указанный адрес электронной почты.
![Пришедшее письмо на почту с помощью функции](/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fuploads%2F2023%2F04%2F08%2F15710a4dfc-uploaded-image.jpg&w=3840&q=75)