SMTPSenderRefused - 553,发件地址未经验证 - Django电子邮件表单。

3

我有一个简单的Django联系表格(用户电子邮件,消息)。我已经配置了Gmail服务器,并且它可以工作,但是由于这个答案指出的原因,它总是将发件人地址重写为设置中列出的地址。所以我改用Yahoo Mail服务器进行配置。

以下是我的settings.py文件

EMAIL_HOST = 'smtp.mail.yahoo.com'
EMAIL_HOST_USER = 'myid@yahoo.com'
EMAIL_HOST_PASSWORD = 'mypass'
EMAIL_PORT = 587
EMAIL_USE_TLS = True 

以下是我的views.py文件内容:

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(
                'Contact Us',
                cd['message'],
                cd.get('email', ''),
                ['myid@yahoo.com'],
            )
            return HttpResponseRedirect('thanks')
    else:
        form = ContactForm()
    return render(request, 'hunt/contact.html', {'form': form})

现在我遇到了一个SMTPSenderRefused异常。

异常值 - (553,'发件人地址未验证-请参阅http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html', 'someone@gmail.com')

编辑 - 我尝试将我的ID myid@yahoo.com放入电子邮件字段中,它可以工作。似乎只有对于我的电子邮件ID才有效。

1个回答

3
几乎所有公共邮件服务器只允许在“From”头部中使用实际作者的电子邮件发送电子邮件。您正在尝试发送“From:some_user@email.com”的电子邮件,但被拒绝了。实际上,这很像您与Google的问题,但是Yahoo会显示错误而不是悄悄地处理头文件。
我会在此处将用户的电子邮件放入消息正文中,并尝试手动将其放入“回复”标题中。
顺便说一下,最好为每个可能的函数(在您的情况下为send_mail)使用命名关键字参数。这通常有助于避免愚蠢的参数顺序错误。

这就是我最终采用的方法,使用“回复地址”头。 - Yin Yang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接