无法将 Django 设置为与 smtp.gmail.com 一起使用
Posted
技术标签:
【中文标题】无法将 Django 设置为与 smtp.gmail.com 一起使用【英文标题】:Cannot set Django to work with smtp.gmail.com 【发布时间】:2011-12-14 05:10:13 【问题描述】:我一直试图让 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
---- python shell -----
从 django.core.mail 导入 EmailMessage
email = EmailMessage('Mail Test', 'This is a test', 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 建议的修改时出现新错误。 shell 不会执行,我收到此错误消息
**EMAIL_HOST_USER = 'some.account@gmail.com'**
^
SyntaxError: invalid syntax
【问题讨论】:
那是直接C+P的设置吗? 嗯,这些不是真正的帐户名和密码,但其余的是 C+p 当你启动 Django REPL 时它们会出现吗? 我不知道如何测试,现在想弄清楚 启动shell,导入django.conf.settings
,看看是否存在。
【参考方案1】:
像这样更改您的设置:
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,这意味着它有效。
【讨论】:
我刚刚将这产生的错误消息添加到我原来的问题中 @la_f0ka 我只是想强调这一行不要在设置文件中使用 **。我已经编辑了上面的代码。请再试一次。 这是正确答案!当前接受的答案(更改EMAIL_USE_TLS = True
的顺序)不正确。【参考方案2】:
我最近设置了这个并且设置略有不同。py 配置。
移动:
EMAIL_USE_TLS = True
到 EMAIL_HOST 上方
添加:
DEFAULT_FROM_EMAIL = 'user@gmail.com'
SERVER_EMAIL = 'user@gmail.com'
【讨论】:
EMAIL_USE_TLS
相对于其他设置的位置无关紧要。所有这些东西都在一个膨胀的循环中执行
@Sheena 但是这个答案还得到了 6 票。表示里面有东西【参考方案3】:
我也遇到了同样的问题,找了半天才找到解决办法。大多数提议的解决方案都在讨论您应该在哪里初始化 EMAIL_USE_TLS 与其他设置相关。我不认为这是解决问题的方法。
我在以下位置找到了解决方案: https://support.google.com/accounts/answer/185833?hl=en 最后 https://security.google.com/settings/security/apppasswords
如果您在本地机器上测试您的项目,您应该转到后一个链接,并启用“访问不太安全的应用程序”。
【讨论】:
这应该是批准的答案。谢谢【参考方案4】: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'
工作正常
【讨论】:
【参考方案5】:你必须去这个链接 https://www.google.com/settings/u/2/security/lesssecureapps?pageId=none 并为不太安全的应用打开访问权限
此选项允许 django 访问您的电子邮件并通过它发送电子邮件。
【讨论】:
以上是关于无法将 Django 设置为与 smtp.gmail.com 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
无法将图像添加为与所有 iPhone 兼容的 Launchscreen