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
>

Reply via email to