@Kwad

Почему не отправляет письма Django + Google SMTP?

Решил сделать восстановление пароля,через postfix не вышло,решил сделать через гугловускую почту,
Вот settings.py:
spoiler
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'login@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_PORT = 587
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

Выдает ошибку при отправке:
ошибка в браузере
TimeoutError at /accounts/password/reset/

[Errno 110] Connection timed out

Консоль:
spoiler
5ecf918990bb4272139455.png

Как исправить и где ошибка?
  • Вопрос задан
  • 175 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...
Гуглится, что не хватает:

EMAIL_USE_SSL = False
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

или даже:
EMAIL_USE_SSL = False
SERVER_EMAIL = DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

И еще, возможно у тебя двухфакторная аутентификация, и тогда твое приложение не авторизовано... читать тут: https://support.google.com/accounts/answer/6010255 ... тогда нужно или отключить двухфакторую авторизацию, или приложение следует подписать и указать в сетингах ключи EMAIL_SSL_CERTFILE и EMAIL_SSL_KEYFILE ... или использовать не gmail, а еще что-то...

Кроме того, чтобы не падало по таймауту -- поставить исключение на это событие, и/или использовать в сетингах EMAIL_TIMEOUT

P.S. Оправка почты из приложения -- медленная штука. Даже если ничего не падает -- пользователь замечает подтормаживание (2-3 секунды и больше). Так что почту лучше отправлять асинхронно или в параллельном потоке. Например, с помощью модуля django_background_tasks ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы