无法将Django设置为与smtp.gmail.com一起使用

la_*_*0ka 20 python django smtp

我一直试图让django与gmail的smtp服务器一起发送邮件,但我总是得到这个追溯.任何帮助将非常感谢.

----- 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
Run Code Online (Sandbox Code Playgroud)

---- python shell -----

来自django.core.mail导入EmailMessage

email = EmailMessage('邮件测试','这是测试',= =''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')
Run Code Online (Sandbox Code Playgroud)

编辑:进行unni建议的修改时出现新错误.shell将不会执行,我收到此错误消息

**EMAIL_HOST_USER  = 'some.account@gmail.com'**
 ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

unn*_*nni 16

像这样更改您的设置:

EMAIL_HOST = 'smtp.gmail.com'

EMAIL_HOST_USER = 'user'

EMAIL_HOST_PASSWORD = 'your-password'

EMAIL_PORT = 587

EMAIL_USE_TLS = True
Run Code Online (Sandbox Code Playgroud)

然后尝试:

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

这应该返回状态1,这意味着它工作.


Mik*_*ies 7

我最近设置了它,并有一个稍微不同的settings.py配置.

移动:

EMAIL_USE_TLS = True 
Run Code Online (Sandbox Code Playgroud)

在EMAIL_HOST之上

加:

DEFAULT_FROM_EMAIL = 'user@gmail.com'
SERVER_EMAIL = 'user@gmail.com'
Run Code Online (Sandbox Code Playgroud)

  • `EMAIL_USE_TLS`与其他设置的关系并不重要.所有这些东西都在一个膨胀的foop中执行 (6认同)

1ma*_*man 7

我有同样的问题,我搜索了半天找到解决方案.大多数建议的解决方案都在讨论与其他设置相关的初始化EMAIL_USE_TLS的位置.我不认为这是解决问题的方法.

我找到了解决方案:https: //support.google.com/accounts/answer/185833?hl = zh-CN ,最后是 https://security.google.com/settings/security/apppasswords

如果您在本地计算机上测试项目,则应转到后一个链接,并启用"访问安全性较低的应用程序".