当使用发送电子邮件的视图时没有任何反应,然后我将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('/')
答案 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服务,包括发送电子邮件的功能。请参阅下面