Hi Bernd, You stated that you see a lot of mails without a message id. Are that mails/messages generated by James? Or is the statement to be considered as 'in general'?
If it is pertaining to James, then we should consider this a bug and a JIRA could be registered. Regards Pierre Smits *ORRTIZ.COM <http://www.orrtiz.com>* Services & Solutions for Cloud- Based Manufacturing, Professional Services and Retail & Trade http://www.orrtiz.com On Tue, Oct 21, 2014 at 8:57 AM, Bernd Waibel <bwai...@intarsys.de> wrote: > 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 >