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

时间:2008-11-17 19:32:34

标签: email sendmail email-integration email-spam email-client

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

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

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

12 个答案:

答案 0 :(得分:27)

您可以在Eudora

中执行此操作

您可以使用in Outlook以编程方式a custom form执行此操作。

您可以在Mozilla from about:config

中执行此操作

答案 1 :(得分:20)

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

答案 2 :(得分:5)

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

答案 3 :(得分:5)

我同意Piskvor的看法。我会将其实现为代理SMTP服务器,这将带来许多好处:

  1. 您不会受限于任何一个电子邮件客户端,因此受其API(如果有)的限制
  2. 它可以应用于邮件服务器端,因此消除了安装和部署难题

答案 4 :(得分:4)

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添加挂钩来更改每个外发电子邮件(标题+正文)。

答案 5 :(得分:3)

已经有人特别询问过Thunderbird:

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

答案 6 :(得分:2)

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

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

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

SendMail配置

标题声明 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   (被问号包围)是   指定,至少一个   指定的标志必须在   此标头的邮件定义   自动输出。如果其中之一   这些标题在输入中,它是   无论如何都指向输出   这些旗帜。

     

特殊标题行几个标题   线条有特殊的解释   由配置文件定义。   其他人有内置的解释   sendmail无法更改   不改变代码。该   内置功能在中描述   以下列表:

     

•Return-Receipt-To:如果此标题   发送后,将向任何消息发送消息   最终的指定名称   交货完成。邮件必须   有l标志(本地交付)设置   在邮件描述符中。 •   错误 - 要:如果错误发生在任何地方   在处理过程中,此标头发送   错误消息到列出的名称   而不是发件人。用这个   邮件列表的标题行,以便   错误将返回到列表中   管理员。 •收件人:如果是留言   没有列出的收件人   消息(在To:,CC:或BCC中:   line),sendmail添加了一个显然:   每个收件人的标题行   在sendmail命令中指定   线。

答案 7 :(得分:1)

我发现,因为pine是开源的,如果这个功能对你来说对这个程序很重要,你可以尝试为项目添加功能。

答案 8 :(得分:1)

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

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

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

答案 9 :(得分:1)

插入邮件客户端以获取自定义标头的一般想法是错误的。

那里有许多客户。在不同的系统上包含不同的版本。

标题+正文格式背后的好处是所有非用户,服务器和路由特定数据都是对用户隐藏的。这个想法很重要。我不认为用户应该对一些自定义的服务器相关标头感到困扰。

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

电子邮件数据的签名是众所周知的过程,由PGP,SMIME等使用。可能有更多的邮件客户端允许这样的操作(由外部程序验证和签名),而不是允许添加或修改自定义邮件头。

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

我认为你喋喋不休地把你的数据放在消息或消息部分。

答案 10 :(得分:1)

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

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

答案 11 :(得分:0)

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

最好能够指定一个人自己的模板但是还不可能。