PHP IMAP - 电子邮件必须有messageid吗?

时间:2011-12-14 23:23:58

标签: php imap gmail-imap

我正在使用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

由于

2 个答案:

答案 0 :(得分:8)

我遇到过的任何MTA都会添加一个Message-ID(如果还没有)。但是,如果您需要跟踪消息或对其进行处理,则需要设置Message-IDReferences标头和In-Reply-To标头使用先前Message-ID的值将消息关联在一起。

References包含回复链中以前Message-ID个值的列表,In-Reply-To包含当前消息为直接回复的Message-ID

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

答案 1 :(得分:5)

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

  

虽然是可选的,但每封邮件都应该有一个" Message-ID:"字段。

如果某些邮件缺少Message-ID,那么你没有做错任何事。对于所有邮件,最初发送邮件的MUA没有为其生成一个邮件(但是每个常用的MUA应该这样做)。

关于通过IMAP识别邮件的唯一ID,您可能需要查看in the standard所述的UID字段。