错误:SMTPRecipientsRefused 553、5.7.1#在Django中的联系表单上工作时

发布于 2021-01-29 17:27:35

我试图在django 1.3,python 2.6中建立联系表格。

出现错误的原因是什么?

错误:

SMTPRecipientsRefused at /contact/
{'test@test.megiteam.pl': (553, '5.7.1 <randomacc@hotmail.com>: Sender address
rejected: not owned by user test@test.megiteam.pl')}

我的settings.py:

EMAIL_HOST = 'test.megiteam.pl'
EMAIL_HOST_USER = 'test@test.megiteam.pl'
EMAIL_HOST_PASSWORD = '###' 
DEFAULT_FROM_EMAIL = 'test@test.megiteam.pl'
SERVER_EMAIL = 'test@test.megiteam.pl'
EMAIL_USE_TLS = True

编辑:如果任何其他跟随djangobook,这是导致它的部分:

        send_mail(
            request.POST['subject'],
            request.POST['message'],
            request.POST.get('email', 'noreply@example.com'), #get rid of 'email'
            ['siteowner@example.com'],
关注者
0
被浏览
42
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    错误消息中有解释。由于randomacc@hotmail.com您已从联系表中获取发件人地址,因此您的电子邮件主机拒绝了该电子邮件。

    相反,您应该使用自己的电子邮件地址作为发件人地址。您可以使用该reply_to选项,以便回复发送给您的用户。

    email = EmailMessage(
        'Subject',
        'Body goes here',
        'test@test.megiteam.pl',
        ['to@example.com',],
        reply_to='randomacc@hotmail.com',
    )
    email.send()
    

    在Django 1.7和更早版本上,没有reply_to参数,但是您可以手动设置Reply-To标头:

    email = EmailMessage(
        'Subject',
        'Body goes here',
        'test@test.megiteam.pl',
        ['to@example.com',],
        headers = {'Reply-To': 'randomacc@hotmail.com'},
    )
    email.send()
    

    编辑:

    在注释中,您询问了如何在邮件正文中包含发件人的地址。在messagefrom_email仅仅是字符串,这样你就可以将它们组合起来,但是你想您发送电子邮件之前。

    注意,您不应该from_email从cleaned_data中获取参数。您知道from_address应当为test@test.megiteam.pl,因此可以使用它,也可以DEFAULT_FROM_EMAIL从您的设置中导入。

    请注意,如果您使用EmailMessage上面的示例创建消息,并将回复设置为标题,那么当您点击回复按钮时,您的电子邮件客户端应该做正确的事情。以下示例用于send_mail使其与链接到代码相似。

    from django.conf import settings
    
    ...
        if form.is_valid():
            cd = form.cleaned_data
            message = cd['message']
            # construct the message body from the form's cleaned data
            body = """\
    from: %s
    message: %s""" % (cd['email'], cd['message'])
            send_mail(
                cd['subject'],
                body,
                settings.DEFAULT_FROM_EMAIL, # use your email address, not the one from the form
                ['test@test.megiteam.pl'],
            )
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看