Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP IMAP - Do emails have to have a messageid?

I'm retrieving emails from Gmail using PHP and IMAP; however, some emails don't have a messageid. Aren't all messages supposed to have a messageid?

I need a unique id for reference so i'm not sure how else to keep track of emails without it.

Am i doing something wrong?

For example here is an email header i get

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

Thanks

like image 426
vitalyp Avatar asked Dec 14 '11 23:12

vitalyp


2 Answers

Any MTA I have ever encountered will add a Message-ID if one is not already present. However, if you need to keep track of messages or thread them, you will need to set a the Message-ID. The References header and the In-Reply-To header use the value of a previous Message-ID to relate messages together.

References contains a list of previous Message-ID values in the reply chain, and In-Reply-To contains the Message-ID to which the current message is a direct reply.

Note that according to the RFC-2822 specification, a Message-ID is technically not required. Well-behaved MTAs generally include one, but some commenters below describe instances where a Message ID was not present, causing failures in messaging clients.

like image 141
Michael Berkowski Avatar answered Nov 15 '22 18:11

Michael Berkowski


The message ID has nothing to do with IMAP but is part of the mail itself and specified in RFC 2822 as "optional" (although it says that it should be present):

Though optional, every message SHOULD have a "Message-ID:" field.

So you are not doing anything wrong if some mails lack a Message-ID. It happens for all the mails that the MUA that originally sent the mail did not generate one for (which however every commonly used MUA should do).

Concerning a unique ID for identifying mails via IMAP, you may want to have a look at the UID field described in the standard.

like image 30
ChrisM Avatar answered Nov 15 '22 18:11

ChrisM