11

我正在使用 PHP 和 IMAP 从 Gmail 中检索电子邮件;但是,有些电子邮件没有 messageid。不是所有的消息都应该有一个messageid吗?

我需要一个唯一的 ID 以供参考,所以我不确定没有它如何跟踪电子邮件。

难道我做错了什么?

例如,这是我得到的电子邮件标题

 [date] => Sun, 06 Nov 2011 21:21:56 -0500
    [subject] => Daylight Saving Time?  Chili's Saving Time!
    [to] => -------@gmail.com
    [message_id] => 
    [from] => ChilisCorp@---.com
    [sender] => ChilisCorp@----.com
    [reply_toaddress] => ChilisCorpeclubsupport@---.com
    [size] => 14385
    [msgno] =>  156
    [status] => Unread

谢谢

4

2 回答 2

10

我遇到的任何 MTA 都会添加一个 Message-ID(如果尚未出现)。但是,如果您需要跟踪消息或将它们串起来,则需要设置Message-ID. 标References头和In-Reply-To标头使用先前的值Message-ID将消息关联在一起。

ReferencesMessage-ID包含回复链中先前值的列表,并In-Reply-To包含Message-ID当前消息直接回复的值。

请注意,根据 RFC-2822 规范,Message-ID 在技术上不是必需的。表现良好的 MTA 通常包括一个,但下面的一些评论者描述了不存在消息 ID 的情况,从而导致消息传递客户端出现故障。

于 2011-12-15T00:36:23.780 回答
6

消息 ID 与 IMAP 无关,但它是邮件本身的一部分,并在RFC 2822中指定为“可选”(尽管它说它应该存在):

虽然是可选的,但每条消息都应该有一个“Message-ID:”字段。

因此,如果某些邮件缺少 Message-ID,您并没有做错任何事。对于最初发送邮件的 MUA 没有为其生成邮件的所有邮件都会发生这种情况(但是每个常用的 MUA 都应该这样做)。

关于通过 IMAP 识别邮件的唯一 ID,您可能需要查看标准中描述的 UID 字段。

于 2011-12-15T00:25:05.697 回答