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

时间:2011-10-24 14:46:10

标签: 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

---- 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')

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

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

5 个答案:

答案 0 :(得分:15)

更改您的设置:

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,这意味着它有效。

答案 1 :(得分:7)

我最近设置了这个,并且settings.py配置略有不同。

移动:

EMAIL_USE_TLS = True 

到EMAIL_HOST上面的顶部

添加:

DEFAULT_FROM_EMAIL = 'user@gmail.com'
SERVER_EMAIL = 'user@gmail.com'

答案 2 :(得分:7)

我遇到了同样的问题,我搜索了半天寻找解决方案。大多数建议的解决方案都在谈论您应该在何处初始化与其他设置相关的EMAIL_USE_TLS。我不认为这是解决问题的方法。

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

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

答案 3 :(得分:0)

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'

工作正常

答案 4 :(得分:0)

你必须去这个链接 https://www.google.com/settings/u/2/security/lesssecureapps?pageId=none 并为不太安全的应用启用访问权限

此选项允许django访问您的电子邮件并通过它发送电子邮件。