[英]SMTPDataError at /accounts/signup/ (553, b'Relaying disallowed as webmaster@localhost')
[英]SMTPDataError (553, b'Relaying disallowed as abc@email.com') while using Contact Form and Zoho Mail
注意:- 我已經檢查了這篇文章的問題和答案,並且我已經在我的設置中添加了 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')
您正試圖讓 Zoho從其他人的電子郵件地址向您發送消息。 這將不起作用,原因有兩個:
因此,您必須從您自己的 Zoho 地址發送消息,而不是從聯系人的電子郵件地址發送。
聯系表格的一個常見目標是能夠輕松回復填寫表格的人。 如果這就是你想要做的,實現它的方法是Reply-To
電子郵件標題。 您需要使用 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()
現在,當用戶填寫您的聯系表單時,您會收到一封來自您自己的“新查詢”電子郵件。 如果您回復詢問,您的回復將發送至聯系人的電子郵件地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.