我正在使用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
由于
答案 0 :(得分:8)
我遇到过的任何MTA都会添加一个Message-ID(如果还没有)。但是,如果您需要跟踪消息或对其进行处理,则需要设置Message-ID
。 References
标头和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字段。