正确发送邮件列表邮件的电子邮件标题

Posted

技术标签:

【中文标题】正确发送邮件列表邮件的电子邮件标题【英文标题】:Correct email headers for delivering mailing list mail 【发布时间】:2011-09-16 18:02:30 【问题描述】:

我正在编写一个允许用户向动态创建的邮件列表发送电子邮件的应用程序。例如,用户可以向 my-team@site.com 发送电子邮件(该站点是体育联赛的联赛管理站点),电子邮件将发送给该​​用户团队中的每个人。我试图弄清楚电子邮件标题应该是什么才能正确发送电子邮件并使所有 From 和 To 字段看起来正确。

在 Gmail 中,当您收到来自邮件列表的电子邮件(我正在查看来自 google 群组的电子邮件)时,它说它来自发送它的人并且它已发送到列表地址,但是电子邮件已发送给我。除了 Delivered-To: 标头之外,我的地址不会出现在任何标头中。这是谷歌的魔法吗,还是我可以做同样的事情?

额外问题:我正在使用 Postfix+OpenDKIM 对电子邮件进行签名。如果 From 域与我指定的域匹配,它将对消息进行签名,但如果 Sender 域匹配,则不会。我怎样才能告诉它使用发件人域。

【问题讨论】:

【参考方案1】:

From: 和 To: 标头用于“显示目的”(这是在用户电子邮件应用程序中作为发件人和收件人呈现的内容)。它们不必与称为“信封发件人”/“信封收件人”并在 smtp 协议中指定的电子邮件消息的真实发件人/收件人相匹配(“MAIL FROM:....”“RCPT TO. ..”)。

示例:

邮件来自 alice@example.com,发送到 list@example.org 并正在发送到 bob@example.net:

从 Alice 到列表服务器:

信封发件人:alice@example.com 信封收件人:list@example.org发件人标头:alice@example.com收件人标头:list@example.org

从列表服务器到 bob:

信封发件人:list-bounces@example.org(因此错误消息会发送到列表服务器,而不是 alice!) 信封收件人:bob@example.net发件人 信头:alice@example.com(Bob 将 Alice 视为发件人,列表服务器未修改)收件人 标头:list@example.org(同样,列表服务器未修改)

可选:Reply-To 标头:list@example.org(因此,如果 bob 按下回复,回复将转到列表 - 由列表服务器添加) - 注意:有些人不喜欢 reply-to header munging

其他标题:

一些电子邮件客户端也理解这些额外的标题并向用户提供特殊的邮件列表功能:

list-Id 列表发布 列表帮助 取消订阅 列表所有者

https://www.ietf.org/rfc/rfc2919.txt https://www.ietf.org/rfc/rfc2369.txt

另外,你可以添加一个标题

Precedence: bulk

例如,它告诉智能外出执行不要向列表发送外出回复。但RFC 2076 不鼓励这样做。

【讨论】:

谢谢,太好了。终于明白信封和邮件头的区别了。仅供参考,Google 将其 Precedence 标头设置为 list,而不是 bulk @lyoshenka 不要设置回复。这违反了 RFC2822 并完全破坏了邮件程序。如果有人点击回复并期望它是私密的,也会导致隐私问题。回复必须仅由消息作者设置。 我添加了一个警告和一个指向邮递员页面的链接,解释了标题修改。有些列表会这样做,有些则不会。 您还应该包含 Sender 标头:list@example.org,因为该列表代表 Alice 发送,所以是完全正确的。【参考方案2】:

看起来 OpenDKIM 总是使用 From: 标头,因此您必须仅签署所有电子邮件。有关说明,请参阅this。

【讨论】:

以上是关于正确发送邮件列表邮件的电子邮件标题的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是啥?

从(Python)代码实际发送邮件的正确方法是什么?

PHP表单发送正确,但我没有收到电子邮件[重复]

无法在 codeigniter 中正确发送电子邮件

Oracle 电子邮件发送日期有时不正确

如何正确地从本地主机发送电子邮件 [关闭]