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