注意:-我已经检查了this post的问题和答案,并且已经按照以下说明在我的设置中添加了default_from_email。现在,在我的联系表中,我希望收到试图与我联系的用户并发送电子邮件。
您好,我有一个使用Django构建的博客,该博客使用Zoho邮件发送激活和密码重置电子邮件。为了实现相同的目的,我在settings.py
中添加了以下代码EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.zoho.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = '<myadmin emailaddress>'
EMAIL_HOST_PASSWORD = '<myadmin password>'
DEFAULT_FROM_EMAIL = '<myadmin email address'
它可以正常工作,并且注册用户正在获取激活电子邮件并重置电子邮件。
现在,在为我的网站创建联系页面时,我添加了一个联系表,要求用户添加他的姓名,电子邮件和消息。
联系方式如下
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
相同的视图是:-
def contact_us(request):
if request.method == "POST":
form = ContactForm(request.POST)
if form.is_valid():
sender_name = form.cleaned_data['name']
sender_email = form.cleaned_data['email']
message = f"{sender_name} has sent you a new message:\n\n{form.cleaned_data['message']}"
send_mail('New Enquiry', message, sender_email, ['admin@saralgyaan.com'])
return HttpResponse('Thanks for contacting us!')
else:
form = ContactForm()
return render(request, 'accounts/contactus.html', {'form': form})
现在,当我添加电子邮件,消息和姓名时,出现以下错误:-
SMTPDataError at /contact/
(553, b'Relaying disallowed as uditvashisht@gmail.com')
答案 0 :(得分:1)
您正试图让Zoho从其他人的电子邮件地址 向您发送消息。这样做不可行有两个原因:
因此,您必须从自己的Zoho地址发送消息 ,而不是从联系人的电子邮件地址发送消息。
联系表中的一个常见目标是能够轻松地答复填写该表的人员。如果您正在尝试这样做,则实现方法是Reply-To
电子邮件标头。您需要使用Django的EmailMessage
类来设置其他标头:
from django.core.mail import EmailMessage
# Then to send in your form view...
contact_name = form.cleaned_data['name']
contact_email = form.cleaned_data['email']
message = f"{contact_name} has sent you a new message ..."
email_msg = EmailMessage(
subject='New Enquiry', body=message,
from_email='admin@saralgyaan.com', # in your Zoho domain (omit to use DEFAULT_FROM_EMAIL)
to=['admin@saralgyaan.com'],
headers={'Reply-To': contact_email}) # <<< where you want replies to go
email_msg.send()
现在,当用户填写您的联系表时,您会收到一封来自您自己的“新查询”电子邮件。并且,如果您回复查询,您的回复将转到联系人的电子邮件地址。