2014-09-01 87 views
1

我想通过Django发送电子邮件作为django-userena的一部分,但我无法收到电子邮件发送。在我的设置,我有:Django电子邮件不发送

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'mypassword' 

我试图从Django的控制台发送一封电子邮件,其中:

from django.core.mail import EmailMessage 
email = EmailMessage('Mail Test', 'This is a test', to=['[email protected]']) 
email.send() 

它挂在发送命令,并不实际发送电子邮件。如果我停止命令,我得到这个回溯:

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/home/myuser/Copy/Projects/Programming/myproject/venv/local/lib/python2.7/site-packages/django/core/mail/message.py", line 274, in send 
    return self.get_connection(fail_silently).send_messages([self]) 
    File "/home/myuser/Copy/Projects/Programming/myproject/venv/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 87, in send_messages 
    new_conn_created = self.open() 
    File "/home/myuser/Copy/Projects/Programming/myproject/venv/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 48, in open 
    local_hostname=DNS_NAME.get_fqdn()) 
    File "/usr/lib/python2.7/smtplib.py", line 251, in __init__ 
    (code, msg) = self.connect(host, port) 
    File "/usr/lib/python2.7/smtplib.py", line 312, in connect 
    (code, msg) = self.getreply() 
    File "/usr/lib/python2.7/smtplib.py", line 356, in getreply 
    line = self.file.readline() 
    File "/usr/lib/python2.7/socket.py", line 447, in readline 
    data = self._sock.recv(self._rbufsize) 

任何帮助,为什么这是不经过?

+0

检查此问题:http://stackoverflow.com/questions/1950442/connection-timeout-issue-sending-email-in-django – ruddra 2014-09-02 06:22:23

回答

4

我有这个相同的问题。我正在使用Django 1.6。事实证明,我需要使用SSL通过Gmail发送电子邮件。所以我用这个方便的程序包:https://github.com/bancek/django-smtp-ssl

$ pip install django-smtp-ssl

然后settings.py应该有这样的:

EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 465 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'YOUR_PASSWORD' 

当然,如果你使用Django 1.7,那么你可以再补充EMAIL_USE_SSL = Truesettings.py和使用默认后端。

+0

谢谢。这个排序我出=) – tr33hous 2015-07-02 11:20:14

+0

这是像这些时刻,当我希望我可以upvote两次! – 2016-12-02 17:07:13