Django电子邮件后端(不断发送来自错误“发件人”的电子邮件)

时间:2011-05-09 19:01:34

标签: django email email-integration

我的项目中有几个实例,我尝试在Django视图中发送电子邮件。

我希望能够在视图中对电子邮件发件人进行硬编码。但是,当我尝试这样做时,它会继续从我的设置文件中指定的默认帐户发送电子邮件。

以下是一个例子:

        if testform.is_valid():
            beta=testform.save()
            subject="Hi Beta Tester"  
            sender="correct@email.com"

            recipient=[testform.cleaned_data['email']]

            text=loader.get_template('registration/beta_email.txt')
            html=loader.get_template('registration/beta_email.html')

            site_name='mysite'
            d=Context({'site_name':site_name})
            text_content=text.render(d)
            html_content=html.render(d)
                #This sends two mail versions, plain text and html
            msg=EmailMultiAlternatives(subject, text_content, sender, recipient)
            msg.attach_alternative(html_content, "text/html")
            msg.send()

            return HttpResponseRedirect('/splash/')

我以为我可以在这里明确指定发送者参数。然而,当我测试它时,电子邮件是从我的设置文件中列出的地址发送的,配置如下:

       EMAIL_USE_TLS=True

       EMAIL_HOST='smtp.gmail.com'

       EMAIL_HOST_USER='wrong@email.com'

       EMAIL_HOST_PASSWORD='private'

       DEFAULT_FROM_EMAIL='wrong@email.com'

我是否只需删除DEFAULT_FROM_EMAIL常量即可使其正常工作?我试过这样做,似乎工作但我很困惑。在Django文档中,它建议在视图中设置发送者应该覆盖DEFAULT。

2 个答案:

答案 0 :(得分:7)

我终于在这里找到了问题。不幸的是,gmail重写了from和 经过验证的smtp上的信封。

如果你想解决这个问题,你必须使用第三方邮件服务器(它不像这样的prissy),然后发送邮件给gmail用户。

答案 1 :(得分:2)

对于发件人电子邮件,请尝试将其放入< >你可以添加一个名字:

sender = "Formal Name <correct@email.com>"

这正是我在电子邮件发送视图中的语法,它可以正常工作。

真的应该没有理由为它添加名称会改变它的发送方式,但它可能值得尝试,也许你想要一个容易阅读的名字。