1   package com.atlassian.mail.server.impl;
2   
3   import javax.mail.MessagingException;
4   import javax.mail.Session;
5   import javax.mail.internet.MimeMessage;
6   
7   /**
8    * Extends the standard JavaMail MimeMessage in order to allow clients to set a custom Message-ID
9    *
10   * @since v2.5.0
11   */
12  public class ExtendedMimeMessage extends MimeMessage
13  {
14      private final String customMessageId;
15  
16      /**
17       * Constructs an ExtendedMimeMessage.
18       *
19       * @param session the mail session
20       * @param customMessageId requested custom Message-ID or null to let JavaMail set one automatically.
21       */
22      public ExtendedMimeMessage(final Session session, final String customMessageId)
23      {
24          super(session);
25          this.customMessageId = customMessageId;
26      }
27  
28      @Override
29      protected void updateMessageID() throws MessagingException
30      {
31          if (customMessageId == null || customMessageId.trim().length() == 0)
32          {
33              // Let the super class create a unique Message-ID
34              super.updateMessageID();
35          }
36          else
37          {
38              // use the provided Message-ID
39              setHeader("Message-ID", "<" + customMessageId + ">");
40          }
41      }
42  }