您的电子邮件客户端是不是允许您以编程方式添加自定义标头?

Posted

技术标签:

【中文标题】您的电子邮件客户端是不是允许您以编程方式添加自定义标头?【英文标题】:Does your email client let you add custom headers programmatically?您的电子邮件客户端是否允许您以编程方式添加自定义标头? 【发布时间】:2010-09-22 17:38:03 【问题描述】:

我正在开展一个反垃圾邮件项目 (centmail),该项目涉及让发件人使用添加自定义标头(以及签名,但该部分是 easier)的客户端插件。一般的问题是在您的外发邮件中添加一个电子邮件标头,其中标头字段的内容是为每封邮件动态确定的。

令人惊讶的是,这在 Pine/Alpine 中似乎是不可能的。 Pine 允许您为传出邮件指定过滤脚本,但只有正文而不是标题通过它。您当然可以在 Pine 设置中定义自定义标题,但我认为无法动态更改它们的内容。

我很高兴听到如何在其他电子邮件客户端(Thunderbird、Outlook、Evolution、Mutt 等)中执行此操作。当然,如果我对 Pine 的看法有误。

【问题讨论】:

我越来越确定我对 Pine 的看法没有错。它实际上有一个选项 (INCLUDEALLHDRS) 将标题传递给传出过滤器脚本,但它仍然不允许脚本更改实际发送的电子邮件中的标题。 看来Mutt和Pine有同样的问题。 既然这是提供赏金的第一个问题,那么它不应该是一个“正常”问题,而不是社区维基吗? 550 个代表点:那是很多充满口水的键盘! 作为一个社区 wiki 会有什么后果?具有双重讽刺意味:我将其标记为 CW,因为我在工具提示解释声誉方面的后果之前开始使用 ***。在赏金说明说“最高投票答案”之前,我发布了一个大赏金。 【参考方案1】:

Thunderbird 插件Enigmail 控制外发邮件的标题。所以这是一个存在证明,它在 Thunderbird 中是可能的。

【讨论】:

【参考方案2】:

您可以在Eudora 中进行操作。

您可以通过in Outlook 和a custom form 以编程方式完成。

您可以在Mozilla from about:config 中进行操作。

【讨论】:

Mozilla 解决方案是否可以实际以编程方式更新每封发送电子邮件的自定义标头字段的内容?【参考方案3】:

虽然它不是严格意义上的插件,但您可以制作一个代理 SMTP 服务器来修改电子邮件 - 例如类似于 AVG Outgoing E-mail Scanner。这将具有与许多电子邮件客户端合作的优势;您还可以制作一个插件,一方面与代理通信,另一方面与电子邮件 UI 通信。

【讨论】:

【参考方案4】:

对于支持使用外部编辑器的所有邮件客户端,您可以有一个脚本,将特定标头添加到发送到编辑器的模板中。在mutt 中,有一个名为edit_headers 的配置参数添加了一组通用的标头,因此很容易添加您自己的标头。还有另一个参数称为my_hdr 可以使用。 Mutt 确实支持 ` backtick ` 符号来运行外部命令。

能够指定自己的模板会更好,但目前还不可能。

【讨论】:

【参考方案5】:

我从 Brain 曲调的旧部分中挖掘到了其他东西......

我认为这种方法是去配置 SENDMAIL 并通过 [bash/etc] 脚本编写如果我理解正确

根文件 http://snap.nlc.dcccd.edu/reference/sysadmin/julian/ewtoc.html

发送邮件配置

标头声明 http://snap.nlc.dcccd.edu/reference/sysadmin/julian/ch04/061-064.html#Heading22

http://snap.nlc.dcccd.edu/reference/sysadmin/julian/ch04/078-080.html

标题行的格式是 由 H 线定义。的语法 这一行是

H[c ?c mflagsc ?]c hnamec :c htemplate

此中的续行 规格直接插入 到外发消息中。这 htemplate 在它之前被宏扩展 被插入到消息中。如果 扩展为空,标题行是 不包含。如果 mflags (被问号包围)是 指定,至少其中之一 指定的标志必须在 此标头的邮件定义到 会自动输出。如果其中之一 这些标题在输入中,它是 定向到输出不管 这些标志。

特殊标题行 几个标题 线条有特殊的解释 由配置文件定义。 其他人有内置的解释 无法更改的发送邮件 无需更改代码。这 内置功能在 以下列表:

• Return-Receipt-To:如果此标头 已发送,消息将发送到任何 最后指定名称时 交货完成。寄件人必须 设置 l 标志(本地交付) 在邮件描述符中。 • Errors-To:如果错误发生在任何地方 在处理期间,此标头发送 列出名称的错误消息 而不是发件人。用这个 邮件列表的标题行,以便 错误返回列表 行政人员。 • 收件人:如果消息 进来时没有列出收件人 消息(在 To:、CC: 或 BCC 中: 行),sendmail 添加了一个明显的收件人: 每个收件人的标题行 在 sendmail 命令上指定 行。

【讨论】:

【参考方案6】:

我同意皮斯克沃尔的观点。我会将它实现为代理 SMTP 服务器,这将产生许多好处:

    您不会受限于任何一个电子邮件客户端,因此会受到其 API(如果有)的限制 可以应用在邮件服务器端,免去安装部署的烦恼

【讨论】:

【参考方案7】:

Emacs 可以通过编程方式完成此操作。您可以创建一个缓冲区 (get-buffer-create),用标头信息填充它,然后以非交互方式调用 mail-send(将 mail-interactive 设置为 nil)。

mail-send 一起使用的缓冲区内容(标题+正文)示例:

From: "Toto" <toto@toto.net>
To: somebody@somewhere.net
Subject: Something
BCC: sebastien.rocca-serra@f4-group.com
--text follows this line--

Hello, how are you?

您还可以通过向mail-send-hook 添加挂钩来更改每封外发电子邮件(标题+正文)。

【讨论】:

【参考方案8】:

这已经被专门询问过关于 Thunderbird 的问题:

How do you insert email headers with a Thunderbird extension?

上面的答案包含修改普通 xul/js 中的标头的代码。

【讨论】:

【参考方案9】:

我突然想到,由于 pine 是开源的,如果这个功能对你来说对这个程序很重要,你可以尝试为项目做贡献以添加这个功能。

【讨论】:

如果你这样做,你就完全得到了这个问题的赏金! :)【参考方案10】:

您可能想要研究的一件事是使用伪标题而不是标题。因为 pine/alpine 允许您为要通过的电子邮件指定一个过滤程序,您可以在开始时将标头添加到正文中,这应该很容易处理。我不确定它是否完全符合您的目的,因为我不知道您正在组装哪种类型的系统。

我通过在Debian BTS System 中的使用了解了伪标头。

回答这个问题,我使用 GMail,你不能以编程方式编辑标题(我很想看到一个允许你的网络邮件)。你can't even 过滤像 X-List 这样的自定义标题,这很烦人。

【讨论】:

【参考方案11】:

为自定义标头插入邮件客户端的一般想法有问题。

那里有很多客户。包括不同的版本,在不同的系统上。

header+body 格式的好处是所有非用户、服务器和路由特定的数据对用户都是隐藏的。这个想法很重要。我认为用户不应该为一些自定义的、与服务器相关的标头而烦恼。

此外,您尝试附加的数据实际上是用户特定的数据。 喜欢签名。它验证发件人的有效性。没有理由对用户隐藏它。

电子邮件数据的签名是众所周知的过程,被 PGP、SMIME 等使用。与允许添加或修改自定义邮件标题相比,允许此类操作(由外部程序验证和签名)的邮件客户端可能更多。

自定义标头应由邮件服务器修改;邮件客户端的用户数据。

我认为你应该把你的数据放在消息或消息部分。

【讨论】:

【参考方案12】:

在不修改 pine 本身或修改邮件服务器的情况下使其在 pine 中工作的一种方法是让 pine 通过命令行程序(传统上是 /usr/sbin/sendmail 等)传递,并让被调用的程序成为包装器对于原始程序。然后你可以添加你需要的任何标题。

虽然这很难看,但它肯定无法扩展到整个用户群。

【讨论】:

以上是关于您的电子邮件客户端是不是允许您以编程方式添加自定义标头?的主要内容,如果未能解决你的问题,请参考以下文章

markdown 这是`jupyter_client`的一个简单包装器,它允许您以编程方式创建Jupyter内核,在其中执行代码,以及retri

将基于送货方式的自定义文本添加到某些 WooCommerce 电子邮件通知

Zabbix 调用API 批量添加主机等

Flutter GoogleMaps - 自定义标记的动态着色

AWS CloudFormation 脚本失败 - 不允许 Cognito 使用您的电子邮件身份

PCI SAQ A 是不是足以用于具有自定义支付页面的电子商务网站?