我编写了一个通过 django 发送邮件的应用程序
模型.py
from django.db import models
from django import forms
class EmailForm(forms.Form):
firstname = forms.CharField(max_length=255)
lastname = forms.CharField(max_length=255)
email = forms.EmailField()
subject = forms.CharField(max_length=255)
botcheck = forms.CharField(max_length=5)
message = forms.CharField()
View .py
from django.views.generic.base import TemplateView
from django.http import HttpResponseRedirect
from django.core.mail import send_mail, BadHeaderError
from models import EmailForm
from django.shortcuts import render
def sendmail(request):
if request.method == 'POST':
form = EmailForm(request.POST)
if form.is_valid():
firstname = form.cleaned_data['firstname']
lastname = form.cleaned_data['lastname']
email = form.cleaned_data['email']
subject = form.cleaned_data['subject']
botcheck = form.cleaned_data['botcheck'].lower()
message = form.cleaned_data['message']
if botcheck == 'yes':
try:
fullemail = firstname + " " + lastname + " " + "<" + email + ">"
send_mail(subject, message, email, ['<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e18c98848c80888da1868c80888dcf828e8c" rel="noreferrer noopener nofollow">[email protected]</a>'], fail_silently=False)
return HttpResponseRedirect('/email/thankyou/')
except:
return HttpResponseRedirect('/email/')
else:
return HttpResponseRedirect('/email/')
else:
return HttpResponseRedirect('/email/')
当
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
它显示在控制台中。
但是当
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
它不会将电子邮件发送给指定的用户。 我的settings.py文件
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'localhost'
EMAIL_PORT = '8000'
如何发送电子邮件?
最佳答案
您已将您的电子邮件主机指定为 localhost
将其更改为可靠的电子邮件主机,例如 gmail。您的 settings.py 可以具有以下给定的设置来使用 gmail smtp 服务器发送电子邮件。您还必须更改端口。
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="becbcddbccd0dfd3dbfed9d3dfd7d290ddd1d3" rel="noreferrer noopener nofollow">[email protected]</a>'
EMAIL_HOST_PASSWORD = 'password'
如果问题仍然存在,您必须允许安全性较低的应用
访问您的 Gmail 帐户。这是 Gmail 最近对其帐户访问策略所做的更改。默认情况下,只有合格的域才能使用 gmail 身份验证 (OAUTH2
) 机制发送电子邮件。要允许安全性较低的应用访问您的 Gmail 帐户,您必须登录 Google 开发者控制台。
关于python - send_email 在 django 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109391/