我正在尝试向用户发送包含邀请/确认链接的电子邮件。命令提示符显示正在发送电子邮件,但用户未收到任何电子邮件。我正在使用我的gmail帐户,还允许不安全的应用程序对其进行访问帐户?可能是什么错误? 这是我的设置文件:-
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'someone@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
我认为它有用的时候如下:-
@csrf_protect
def signup(request):
if request.method == 'POST':
form = SignupForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False
user.save()
current_site = get_current_site(request)
mail_subject = 'Activate your blog account.'
message = render_to_string('acc_active_email.html', {
'user': user,
'domain': current_site.domain,
'uid':urlsafe_base64_encode(force_bytes(user.pk)).decode(),
'token':account_activation_token.make_token(user),
})
to_email = form.cleaned_data.get('email')
email = EmailMessage(
mail_subject, message, to=[to_email]
)
email.send()
return JsonResponse({'success':True})
else:
form=SignupForm()
return JsonResponse({'errors': [(k, v[0]) for k, v in form.errors.items()]})
奇怪的是,我的控制台正在显示电子邮件,但目标用户没有收到该电子邮件。
答案 0 :(得分:1)
罪魁祸首是您的配置这一行:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
来自django documentation on
console.EmailBackend
:控制台后端不发送真实的电子邮件,而只是写 将会发送到标准输出的电子邮件。
如果您要发送真实的电子邮件,请选择合适的后端。由于您似乎正在尝试使用smtp,因此您最可能想使用django的smtp.EmailBackend
,如下所示:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'