gpt4 book ai didi

django - 使用联系表单和 Zoho Mail 时出现 SMTPDataError(553,b'Relaying disallowed as abc@email.com')

转载 作者:行者123 更新时间:2023-12-04 02:52:10 24 4
gpt4 key购买 nike

注意:- 我已经检查了this post 的问题和答案。并且我已经在我的设置中添加了 default_from_email ,如下所述。现在,在我的联系表中,我想接收试图联系我的用户的电子邮件。

您好,我有一个用 Django 构建的博客,它使用 Zoho mail 发送激活和密码重置电子邮件。为了实现相同的目的,我在 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')

最佳答案

您正在尝试让 Zoho 从其他人的电子邮件地址 向您发送消息。这行不通有两个原因:

  • Zoho(与任何信誉良好的电子邮件提供商一样)不会让您发送电子邮件假装是来自其他人。您只能从您自己的帐户(或您在 Zoho 中设置的域) 发送电子邮件。这就是您收到“不允许中继”错误的原因。
  • 即使 Zoho 允许您从其他域发送电子邮件,它最终也会在接收端变成垃圾邮件(或完全被阻止)。 Gmail 和大多数其他主要电子邮件服务都有可用的信息,列出了它们的地址中可以发出电子邮件的。如果电子邮件来自其他地方,则为垃圾邮件。而且您的 Zoho 帐户不在他们的名单上! (如果您对详细信息感兴趣,请搜索 DMARC、DKIM 和 SPF。)

所以您必须您自己的 Zoho 地址发送消息,而不是联系人的电子邮件地址。

联系表单的一个常见目标是能够轻松回复填写表单的人。如果这就是您想要做的,实现它的方法是 Reply-To 电子邮件 header 。你需要使用 Django 的 EmailMessage包含 reply_to 的类(注意它必须是一个列表,就像 to 一样):

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'],
reply_to=[contact_email]) # where you want replies to go
email_msg.send()

现在,当用户填写您的联系表格时,您会收到一封来自您自己的“新咨询”电子邮件。如果您回复查询,您的回复将发送到联系人的电子邮件地址。

关于django - 使用联系表单和 Zoho Mail 时出现 SMTPDataError(553,b'Relaying disallowed as abc@email.com'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com