什么是设置" From"的正确方法。使用Django EmailMessage类的电​​子邮件中的标题?

时间:2014-09-30 17:17:11

标签: python django email email-headers django-email

我能够发送电子邮件并设置大多数标题没有问题。

但是这已经给了我一段时间的奇怪结果了。

这就是我目前所处的位置:

email = EmailMessage(
    'My foobar subject!!',
    render_to_string(
        'emails/new_foobar_email.txt',
        {
            'foo': foo.something,
            'bar': bar.something,
        }
    ),
    'notify@foobar.com',
    [the_user.email, ],
    headers={'From ': 'Darth Vader <darth@vader.com>'},
)
email.send(
    fail_silently=False
)

当电子邮件到达时,它表示来自&#34; notify@foobar.com"而不是&#34; Darth Vader&#34;。

我已尝试设置标题:

# this way worked but was inconsistent. Some email clients showed it was from "unknown sender".
headers={'From ': 'Darth Vader'},

我已经通过这份关于Internet Message Formats (RFC 2822)的文件进行了挖掘,如果我遵循最佳做法,我并不清楚。

我也看到了这个SO Question,但它适用于send_mail()函数。它可能类似,但 不同。

我并不关心我的电子邮件客户端是否正确显示(因为我已经尝试了很多不同的方式并且可能缓存了我做错的其中一种方式,因此可能会受到污染。)但我和#39;关注以下最佳做法,因此它适用于大多数电子邮件客户端。

问题

设置&#34; From&#34;的正确方法是什么?使用EmailMessage类在电子邮件中标题?而且,与电子邮件客户端最兼容的方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以将详细信息直接放在from参数中:

email = EmailMessage(
    'My foobar subject!!',
    body,
    'Darth Vader <notify@foobar.com>',
    [the_user.email])

答案 1 :(得分:0)

email = EmailMessage(
    'My foobar subject!!',
    render_to_string(
        'emails/new_foobar_email.txt',
        {
            'foo': foo.something,
            'bar': bar.something,
        }
    ),
    'darth@vader.com',
    [the_user.email, ],
    headers={'From': 'Darth Vader <darth@vader.com>'},
)
email.send(
    fail_silently=False
)

我做错的关键是在&#34; From&#34;之后有一个尾随空格。所以这会奏效。

然而。我将简化代码并按照@Daniel Roseman的建议进行操作,并将显示名称放在from参数中,而不是使用标题关键字。