以编程方式向电子邮件添加签名

Programmatically adding a signature to an email

我需要为通过专用代理服务器的电子邮件添加签名。好像没有很好的办法,我初步的想法是:

  1. 如果邮件是非 MIME,或者是 text/plain,只需在正文底部添加文本, 带有前面的“--”行(添加签名的旧约定 text/plain 条消息;参见 RFC3676, 4.3)
  2. 如果邮件是multipart/mixed,找到最后一个边界,然后插入 它上面的一个新的“multipart/alternative”实体,包含普通和 HTML 个版本的签名。这样做的缺点是 sig 可能 不过出现在附件下方。
  3. 如果邮件不是 multipart/mixed,请将其设为 multipart-mixed,然后 将现有实体降级到混合部分;现在添加 multipart/alternative签名为新的最后一部分 multipart/mixed。与 (2) 相同的缺点。

好像很啰嗦。关于更好的方法有什么想法吗?谢谢。

我按上面的方式编码,它在 Yahoo、gmail、AOL、GMX 和 Thunderbird 上都很好,MIME 验证 here and here。 问题是我再次忘记了微软完全无法阅读 RFC。如果 multipart/mixed 部分包含两个 multipart/alternative 部分,其中每个部分包含一个 text/plain 和一个 text/html 替代项,那么 Outlook/hotmail 实际上显示 both 第二个选项 multipart/alternative。因此,它同时显示普通签名和 HTML 版本。

修复很简单 - 我没有为签名添加第二个 multipart/alternative,而是添加一个 text/html 部分,仅包含 HTML 签名。这在上面的所有 MUA 上都能正确显示,包括脑死亡的 MUA。不太理想,但我可以只为 Microsoft 收件人启用修复程序,如果他们说服他们的 MUA 只显示纯文本,让他们解决问题。

如果只对 text/html 感兴趣而不对 text/plain 部分感兴趣,则更简单的实现方式是使用 [=26= 将 text/html 转换为 multipart/mixed ] 签名.

之前

multipart/alternative
  text/plain
  text/html

之后

multipart/alternative
  text/plain
  multipart/mixed
    text/html
    text/html <== your signature