簡體   English   中英

使用聯系表單和 Zoho Mail 時出現 SMTPDataError(553,b'Relaying disallowed as abc@email.com')

[英]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 設置的域)發送電子郵件。 這就是為什么您會收到“不允許中繼”錯誤的原因。
  • 即使百會先給你從其他域發送郵件,它會歸入垃圾郵件(或只是完全阻塞)在接收端。 Gmail 和大多數其他主要電子郵件服務都提供可用信息,列出來自其地址的電子郵件的來源。 如果電子郵件來自其他地方,那就是垃圾郵件。 而且您的 Zoho 帳戶不在他們的列表中! (如果您對詳細信息感興趣,請搜索 DMARC、DKIM 和 SPF。)

因此,您必須您自己的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM