Django邮件无法发送

5

我正在尝试通过Django发送电子邮件,作为django-userena的一部分,但我无法成功发送电子邮件。在我的设置中,我有:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myuser@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'

我尝试使用Django控制台发送电子邮件:

from django.core.mail import EmailMessage
email = EmailMessage('Mail Test', 'This is a test', to=['otheruser@gmail.com'])
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)

请问为什么这个操作没有成功呢?


请查看以下问题:https://dev59.com/KkrSa4cB1Zd3GeqPavdc - ruddra
1个回答

7

我遇到过同样的问题。我正在使用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@gmail.com'
EMAIL_HOST_PASSWORD = 'YOUR_PASSWORD'

当然,如果您正在使用Django 1.7,则只需将EMAIL_USE_SSL = True添加到settings.py中并使用默认后端即可。

1
这种时刻我真希望我能够点赞两次! - Matt Cremeens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接