Hi Giri, your question is somehow unclear to me. So I try to clear some things up. There is a "message ID" and a "message number".
According to RFC every mail SHOULD have a Header-Field "message-id". (See https://tools.ietf.org/html/rfc2822 Chapter 3.6.4). But "in the wild" we observe a lot of mails without a message id. The "message number" is just the number of a mail in a folder. So if you delete messages in a folder, you may get new message numbers. Or maybe if the get sorted. If you would like to identify a message, you could use message-id, but you could not trust this header field to be set. So we do fix that in our own implementation: (our code, feel free to use): /** * An id suitable for logging etc. * * @param mail * @return */ static public String getId(Mail mail) { try { // rfc2822: every message SHOULD have a "Message-ID:" field. // But not need to. Outlook 2003 may miss the id. String id = mail.getMessage().getMessageID(); if (id == null || id.trim().isEmpty())) { id = mail.getName(); } return id; } catch (MessagingException e) { return mail.getName(); } } We use the "getName" as fallback, which ist part of the org.apache.mailet.Mail API. This seems to work good, we did not have mails without a name till now. But the name need NOT to be unique. E.g. if you "copy" a mail in your programm, it may have the same name. To me it seems there is not a "always unique" number. The message-id is very near to "always unique", if it exists. The "name" may be next to that, it seems always to be be there. The "messagenumber" is only temporary unique. Btw: This is not part of "james", is it part of the Java Mail API, developed by Sun, years ago. For the java classes you mentioned, you may have a look at the source code of this classes: javax.mail.Message: /** * Get the Message number for this Message. * A Message object's message number is the relative * position of this Message in its Folder. Note that the message * number for a particular Message can change during a session * if other messages in the Folder are deleted and expunged. <p> * * Valid message numbers start at 1. Messages that do not belong * to any folder (like newly composed or derived messages) have 0 * as their message number. * * @return the message number */ public int getMessageNumber() { return msgnum; } javax.mail.internet.MimeMessage (extends javax.mail.Message) /** * Returns the value of the "Message-ID" header field. Returns * null if this field is unavailable or its value is absent. <p> * * The default implementation provided here uses the * <code>getHeader</code> method to return the value of the * "Message-ID" field. * * @return Message-ID * @exception MessagingException if the retrieval of this field * causes any exception. * @see javax.mail.search.MessageIDTerm * @since JavaMail 1.1 */ public String getMessageID() throws MessagingException { return getHeader("Message-ID", null); } Good luck, Bernd -----Ursprüngliche Nachricht----- Von: Girivaraprasad Nambari [mailto:girinamb...@gmail.com] Gesendet: Dienstag, 21. Oktober 2014 07:35 An: James Users List Betreff: Does james re-use messageID? Hi Everyone, I have observed an interesting scenario today with James messageID, I received few hundred emails and all emails got incremented messageID. Today I deleted few old emails. The emails I received after cleaning up old emails got old message Id's. 1) Does james re-use messageID? If yes, is there anyway we can disable this feature? In my code I am using following statement to retrieve message ID: MimeMessage msg = (MimeMessage) cMsg; int messageNumber = msg.getMessageNumber(); As per mail specification, shouldn't messagenumber be unique? Any help appreciated. Thank you, Giri