Не удается настроить Django для работы с smtp.gmail.com - PullRequest
19 голосов
/ 24 октября 2011

Я пытался заставить django работать с smtp-сервером gmail для отправки писем, но я всегда получаю эту трассировку.Любая помощь будет наиболее ценной.

----- settings.py -----

EMAIL_HOST = 'smtp.gmail.com'

EMAIL_HOST_USER = 'user@gmail.com'

EMAIL_HOST_PASSWORD = 'your-password'

EMAIL_PORT = 587

EMAIL_USE_TLS = True

---- оболочка python -----

из django.core.mail import EmailMessage

email = EmailMessage ('Тест почты', 'Это тест', to = ['somemail@something.com'])

email.send ()

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/fiodorovich/Envs/fdict/lib/python2.7/site-packages/django/core/mail/message.py", line 251, in send
return self.get_connection(fail_silently).send_messages([self])
File "/home/fiodorovich/Envs/fdict/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 86, in send_messages
sent = self._send(message)
File "/home/fiodorovich/Envs/fdict/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 104, in _send
email_message.message().as_string())
File "/usr/local/lib/python2.7/smtplib.py", line 701, in sendmail
raise SMTPSenderRefused(code, resp, from_addr)
SMTPSenderRefused: (530, '5.7.0 Must issue a STARTTLS command first. z15sm10449686anl.15', 'webmaster@localhost')

Редактировать: Новые ошибки при внесении изменений, предложенных unni.Оболочка не будет работать, и я получаю это сообщение об ошибке

**EMAIL_HOST_USER  = 'some.account@gmail.com'**
 ^
SyntaxError: invalid syntax

Ответы [ 5 ]

15 голосов
/ 25 октября 2011

Измените ваши настройки следующим образом:

EMAIL_HOST = 'smtp.gmail.com'

EMAIL_HOST_USER = 'user'

EMAIL_HOST_PASSWORD = 'your-password'

EMAIL_PORT = 587

EMAIL_USE_TLS = True

Тогда попробуйте:

python manage.py shell
>>> from django.core.mail import EmailMessage
>>> email = EmailMessage('Mail Test', 'This is a test', to=['somemail@something.com'])
>>> email.send()

Это должно вернуться со статусом 1, что означает, что он работал.

7 голосов
/ 13 августа 2014

У меня была такая же проблема, и я искал полдня, чтобы найти решение. Большинство предлагаемых решений говорят о том, где вы должны инициализировать EMAIL_USE_TLS по отношению к другим настройкам. Я не думаю, что это решение проблемы.

Я нашел решение по адресу: https://support.google.com/accounts/answer/185833?hl=en и наконец https://security.google.com/settings/security/apppasswords

Если вы тестируете свой проект на локальном компьютере, перейдите по последней ссылке и включите «Доступ к менее защищенным приложениям».

7 голосов
/ 26 октября 2011

Я недавно настроил это, и у меня был немного другой конфигурационный файл settings.py.

Перемещение:

EMAIL_USE_TLS = True 

наверх выше EMAIL_HOST

Добавить:

DEFAULT_FROM_EMAIL = 'user@gmail.com'
SERVER_EMAIL = 'user@gmail.com'
0 голосов
/ 10 ноября 2016

вам нужно перейти по этой ссылке https://www.google.com/settings/u/2/security/lesssecureapps?pageId=none и включить доступ для менее безопасных приложений

эта опция позволяет django получить доступ к вашей электронной почте и отправлять электронную почту через нее.

0 голосов
/ 16 октября 2016
EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
EMAIL_HOST='smtp.gmail.com'
EMAIL_PORT=465
EMAIL_HOST_USER = 'youruser'
EMAIL_HOST_PASSWORD = '*********'
DEFAULT_EMAIL_FROM = 'youremail@gmail.com'

отлично работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...