send_mail работает локально, но не на рабочем хостинге

Следующее работает локально, но когда я развернул его на производственном хостинге в Digital Ocean, электронное письмо не отправляется, поскольку я тестирую команду оболочки (оболочка python manage.py), как показано ниже. Строка send_mail просто застряла там, и я получаю сообщение об ошибке: [Errno 101] Сеть недоступна через несколько минут. Как я могу зафиксировать ошибку при отправке электронной почты? Посоветуйте, как мне решить эту проблему.

from django.core.mail import send_mail
send_mail('test email', 'hello world', '[email protected]', ['[email protected]'],fail_silently=False)

# Email settings
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_PASSWORD = 'xxxx' #my gmail password
EMAIL_HOST_USER = '[email protected]' #my gmail username
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

person djreenykev    schedule 18.12.2017    source источник
comment
Оказывается, Digital Ocean заблокировал SMTP моего приложения. Как только они разблокируются после того, как я отправил запрос в службу поддержки, он начинает работать. Блокировок других приложений на этом же хостинге не было.   -  person djreenykev    schedule 19.12.2017


Ответы (1)


Настройки вашего приложения Django выглядят правильно, но вам также следует перейти на https://accounts.google.com/DisplayUnlockCaptcha и убедитесь, что вы разрешили доступ к приложениям с более низким уровнем безопасности.

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

person Oliver    schedule 18.12.2017