django - 联系表格发送电子邮件成功,但我的邮箱中没有消息 - django
问题描述
我为我的网站的联系页面创建了以下 django 联系表。表单的问题在于,当用户填写并单击提交按钮时,它会显示成功消息,但不会发送电子邮件。我的意思是我的盒子里没有收到消息有人可以检查并告诉我哪里出错了。
表格.py:
from django import forms
from django.forms import ModelForm
# contact form
class ContactForm(forms.Form):
contact_name = forms.CharField(required=True )
contact_email = forms.EmailField(required=True )
title = forms.CharField(required=True)
content = forms.CharField(required=True )
视图.py:
def contact(request):
Contact_Form = ContactForm
if request.method == 'POST':
form = Contact_Form(data=request.POST)
if form.is_valid():
contact_name = request.POST.get('contact_name')
contact_email = request.POST.get('contact_email')
contact_content = request.POST.get('content')
title = request.POST.get('title')
template = loader.get_template('website_primary_html_pages/contact_form.txt')
context = {
'contact_name' : contact_name,
'contact_email' : contact_email,
'title' : title,
'contact_content' : contact_content,
}
content = template.render(context)
email = EmailMessage(
"Hey , There are new Message from blog",
content,
"Creative web" + '',
['contact@techpediaa.com'],
headers = { 'Reply To': contact_email }
)
email.send()
return redirect('Success')
return render(request, 'website_primary_html_pages/contact_us.html', {'form':Contact_Form })
#end contact form
设置.py:
#MY EMAIL SETTING
DEFAULT_FROM_EMAIL = 'contact@techpediaa.com'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
当用户填写所有字段时,它显示消息发送成功但我没有收到任何消息为什么
- 我使用 namecheap 作为主机
我在 settings.py 中的新设置:
#MY EMAIL SETTING
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'contact.techpediaa.com'
EMAIL_USE_TLS=False
EMAIL_PORT = 587
EMAIL_HOST_USER = 'contact@techpediaa.com'
EMAIL_HOST_PASSWORD = 'mypass'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
解决方案
是的,您可以将其用于 Cpanel。
Cpanel 的流程与 google 的流程相同。您需要在 Cpanel 中创建应用密码
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'your_mail.your_domain_of_Cpanel'
EMAIL_USE_TLS=True
EMAIL_PORT = 587
EMAIL_HOST_USER = 'email'
EMAIL_HOST_PASSWORD = 'app_password'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
现在就试试
如果 EMAIL_USE_TLS 收到任何类型的错误,则编辑它 False
推荐阅读
- html - 如何使用 Selenium 定位按钮
- python - 线图的 Matplot 库图(python)
- css - 同一页面提供不同的视觉输出
- openshift - 获取 H2OFrame 作为对象,而不是获取对 H2O 集群中某个位置的引用
- javascript - AMP 如何识别在 AMP 生态系统之外登录的用户?
- excel - 如何根据多行获取条件的通过/失败?
- jenkins - 导入 Jenkins WorkflowScript 类
- javascript - Reactjs 如何处理表单
- .net-core - 使用 ASP.Net Core v2.2 ProtectKeysWithAzureKeyVault() 数据保护
- regex - 使用获取参数排除 url 的正则表达式