Django send_mail无法正常工作

时间:2012-04-30 13:39:43

标签: django django-email

当使用发送电子邮件的视图时没有任何反应,然后我将send_mail(...)输入到python shell中,它返回1但我没有收到任何电子邮件。

这是我的settings.py

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

这是观点:

def send_email(request):
    send_mail('Request Callback', 'Here is the message.', 'workorbit@gmail.com',
        ['charl@byteorbit.com'], fail_silently=False)
    return HttpResponseRedirect('/')

3 个答案:

答案 0 :(得分:12)

调整您的设置:

DEFAULT_FROM_EMAIL = 'workorbit@gmail.com'
SERVER_EMAIL = 'workorbit@gmail.com'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'workorbit@gmail.com'
EMAIL_HOST_PASSWORD = 'P@ssw0rd5'

调整代码:

from django.core.mail import EmailMessage

def send_email(request):
    msg = EmailMessage('Request Callback',
                       'Here is the message.', to=['charl@byteorbit.com'])
    msg.send()
    return HttpResponseRedirect('/')

答案 1 :(得分:1)

如果您不关心 防止标头注入: (你应该关心它:https://docs.djangoproject.com/es/1.9/topics/email/#preventing-header-injection,但让我们继续)

settings.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'user@gmail.com'
EMAIL_HOST_PASSWORD = 'pass'
EMAIL_USE_TLS = True

views.py(示例):

from django.views.generic import View
from django.core.mail import send_mail
from django.http import HttpResponse, HttpResponseRedirect

class Contacto(View):
        def post(self, request, *args, **kwargs):
            data = request.POST
            name = data.get('name', '')
            subject = "Thanks  %s !" % (name)
            send_mail(subject, data.get('message', ''), 'user@gmail.com', [data.get('email', '')], fail_silently=False)
        return HttpResponseRedirect('/')
  

这是发送电子邮件的危险方式

当您第一次尝试发送电子邮件时,您会收到一封谷歌电子邮件,建议不要这样做。 您必须“激活”“安全性较低的应用”(https://www.google.com/settings/security/lesssecureapps),然后重试。第二次工作。

答案 2 :(得分:0)

Google现在提供了一种生成密码的方法,可用于需要中继邮件的应用程序。它与您用于通过Webmail登录的密码不同。

登录Google并开始使用应用密码。这使您可以使用16位密码访问Google服务,包括发送电子邮件的功能。请参阅下面

https://support.google.com/accounts/answer/185833?hl=en