2014-09-30 52 views
0

我可以发送电子邮件并设置大多数标题没有问题。在使用Django EmailMessage类的电​​子邮件中设置“发件人”标题的正确方法是什么?

但是这已经让我有相当长一段时间了。

这是我在目前我:

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

当电子邮件到达时,它说,这是从“[email protected]”,而不是“黑武士”。

我试过设置标题是这样的:

# 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()函数。它可能类似,但它与不同。

我不关心我的电子邮件客户端显示正确(可能会因为我尝试了很多不同的方式,可能缓存了我做错的一种方式而受到污染..),但我担心的是遵循以下最佳实践,以便适用于大多数电子邮件客户端。

问题

什么是设置在使用EmailMessage类邮件的“发件人”标头的正确方法?而且,与电子邮件客户端最兼容的方式是什么?

+1

为什么要在标题名称('From')中添加尾部空格? – jjmontes 2014-09-30 17:21:08

回答

1

您可以直接把细节在from说法:

email = EmailMessage(
    'My foobar subject!!', 
    body, 
    'Darth Vader <[email protected]>', 
    [the_user.email]) 
+0

我发现我的原始解决方案中有一个拖尾的空白区域。但是,您的解决方案感觉更清洁,尤其是因为我没有为这些特定电子邮件设置任何其他标头。所以我会和你一起回答。谢谢! – teewuane 2014-09-30 17:36:02

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

我做错了事情的关键是有后“从”尾随空间。所以这会起作用。

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

相关问题