无法在Django 1.10上发送电子邮件?

时间:2017-02-24 09:23:06

标签: python django

我在Django版本1.10上发送邮件时遇到问题,下面的错误可以出现在我的控制台中。

错误

   for res in getaddrinfo(host, port, 0, SOCK_STREAM):

gaierror:[Errno -2]名称或服务未知

我的代码是,

settings.py

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

views.py

from django.shortcuts import render
from django.core.mail import EmailMessage
from django.core.mail import send_mail

def contact(request):
    if request.method == 'POST':
        print "----------------"
        email = EmailMessage('title', 'body', to=['mymail@gmail.com'])
        email.send()
        print"--------------------stop"
        return render(request, 'contact/contact.html')
    return render(request, 'contact/contact.html')      

3 个答案:

答案 0 :(得分:0)

您是否为安全性较低的应用启用了Access?如果没有,

转到您的Google帐户设置,找到安全性 - >帐户权限 - >访问安全性较低的应用,启用此选项。

https://accounts.google.com/b/0/DisplayUnlockCaptcha

答案 1 :(得分:0)

试试这个:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'e-mail@gmail.com'
EMAIL_HOST_PASSWORD = '*******'
EMAIL_USE_SSL = True

并且我想补充一点:

if DEBUG:
    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

后者将使用终端以文本形式显示您的电子邮件。

如果您不想使用终端查看电子邮件,而是发送真实的电子邮件,请从EMAIL_BACKEND中删除Settings.py变量。

答案 2 :(得分:0)

我认为你有:

DEFAULT_EMAIL_FROM = 'mymail@gmail.com'

代替:

DEFAULT_FROM_EMAIL = 'mymail@gmail.com'