2011-02-02 295 views
2

美好的一天!
对不起,这么“清楚”的问题,让我解释一下。在我的“程序”中,我通过(例如)gmail SMTP服务器发送一些电子邮件。假设我发送的每封电子邮件在标题中都包含一些唯一ID(由我生成)。是否有机会,从gmail(例如,用python imaplib)检索消息后,我会再次获得该唯一ID(在标题中)?
谢谢发送邮件通过SMTP保证ID

回答

2

一般来说,MTA将保留您引入的任何消息标题。中继MTA都required to do so

正如在6.4节讨论的,中继SMTP有没有需要检查或者在消息数据的报头部分或身体 行为,并不得 这样做,除了增加自己的“收到:“标题字段(第4.4节) ,并可选择尝试检测邮件系统中的循环(请参见 第6.3节)。当然,这种禁止也适用于这些头域或文本的任何 修改(另请参阅第7.9节)。

一般来说,接收MTA还会添加与消息接收,垃圾邮件检查,循环检测等相关的更多标题。所以是的,无论您使用哪个目标SMTP服务器,GMail或其他方式,您都几乎可以确保安全。

如果ID确实是唯一的,您可能需要考虑将它们用作your Message-ID header value的一部分。使用Message-ID用于此目的的好处是,当用户回复您的消息时,它们通常包括在其In-Reply-To和/或ReferencesMessage-ID值:

“消息ID:”字段提供了一个独特的消息标识符 涉及特定消息的特定版本。消息标识符的唯一性由 生成的主机保证(见下文)。该消息标识符旨在是机器可读的并且不一定对人有意义。消息 标识符恰好属于特定消息的一个版本; 对邮件的后续修订每收到一个新邮件 标识符。

创建对消息的回复时使用“In-Reply-To:”和“References:”字段。它们保存原始消息的消息标识符和其他消息的消息标识符(例如,在回复本身是应答的消息的情况下,为 )。“In-Reply-To:”字段可用于标识新消息是回复的消息(或 消息),而“参考:”字段可用于标识以下消息的“线索”: 谈话。

2

我只是做了一些测试,看起来可能并且非常简单。

我使用Mail.php扩展来实现这种情况(应该没关系,但是)。我在发送消息之前添加了一个额外的标题(“Trevor”=>“我的测试”)。我在Gmail中收到邮件并做了一个“显示原始邮件”,其中包含标题。

然后我拉下这条消息(也通过PHP),并且头部包含我输入的自定义行。