【发布时间】:2011-06-19 23:47:30
【问题描述】:
美好的一天!
抱歉这么“清楚”的问题,让我解释一下。在我的“程序”中,我通过(例如)gmail SMTP 服务器发送一些电子邮件。假设我发送的每封电子邮件的标题中都包含一些唯一的 ID(由我生成)。有没有机会,在从 gmail 检索消息(例如,使用 python imaplib)后,我会再次获得该唯一 ID(在标头中)?
谢谢
【问题讨论】:
标签: email smtp email-headers
美好的一天!
抱歉这么“清楚”的问题,让我解释一下。在我的“程序”中,我通过(例如)gmail SMTP 服务器发送一些电子邮件。假设我发送的每封电子邮件的标题中都包含一些唯一的 ID(由我生成)。有没有机会,在从 gmail 检索消息(例如,使用 python imaplib)后,我会再次获得该唯一 ID(在标头中)?
谢谢
【问题讨论】:
标签: email smtp email-headers
通常,MTA 将保留您引入的任何邮件标头。中继 MTA 是 required to do so:
如第 6.4 节所述,中继 SMTP 不需要检查或 作用于消息数据的标题部分或正文,不得 这样做除了添加自己的“Received:”头字段(第 4.4 节) 并且,可选地,尝试检测邮件系统中的循环(参见 第 6.3 节)。当然,这项禁令也适用于任何 修改这些标题字段或文本(另见第 7.9 节)。
一般来说,接收 MTA 也只会添加更多与邮件接收、垃圾邮件检查、循环检测等相关的标头。所以是的,无论您使用哪个目标 SMTP 服务器(GMail 或其他服务器),您几乎肯定会安全。
如果 ID 确实是唯一的,您可能需要考虑将它们用作 your Message-ID header value 的一部分。为此目的使用Message-ID 的好处是,当用户回复您的消息时,他们通常会在In-Reply-To 和/或References 标头中包含Message-ID 值:
“消息 ID:”字段提供了一个唯一的消息标识符,该标识符 指特定消息的特定版本。这 消息标识符的唯一性由主机保证 生成它(见下文)。此消息标识符旨在 机器可读,对人类不一定有意义。一个消息 标识符与特定消息的一个版本有关; 对消息的后续修订每次都会收到新消息 标识符。
“In-Reply-To:”和“References:”字段用于创建 回复消息。他们持有原始的消息标识符 消息和其他消息的消息标识符(例如, 在回复本身就是回复的消息的情况下)。这 “In-Reply-To:”字段可用于标识消息(或 消息),新消息是对它的回复,而 “References:”字段可用于标识一个“线程”的 对话。
【讨论】:
我刚刚对此进行了一些测试,看起来可行,实际上非常简单。
我使用 Mail.php 扩展来实现这一点(不过应该没关系)。我在发送消息之前添加了一个额外的标题(“Trevor”=>“我的测试”)。我在 Gmail 中收到邮件并执行了“显示原件”并包含标题。
然后我将这条消息拉下来(也通过 PHP),并且标题包含我输入的自定义行。
【讨论】: