title: How to get message from MessageIDTerm for Yahoo IMAP profile?
body: <p>I am trying to get IMAP message from message ID, this case is successful for IMAP server for Gmail i.e <strong>imap.gmail.com</strong> but same I am trying with Yahoo IMAP server <strong><code>imap.mail.yahoo.com</code></strong>, <code>inbox.search(searArr[0])</code> is returning null.</p>
  
  <p>My code block to get message is -</p>
  
  <pre><code>Message[] msgs = null;
   MessageIDTerm[] searArr = new MessageIDTerm[]{new MessageIDTerm((String) strMessageID)};
   if (inbox != null &amp;&amp; inbox.isOpen()) {
          msgs = inbox.search(searArr[0]);
    }
    for (int i = 0; i &lt; msgs.length; i++) {
          System.out.println("Message: " + msgs[i]);
    }
  </code></pre>
  
  <p>I am using JavaMail-1.4.5 version. </p>
  
  <p>This is protocol trace of one <strong>Yahoo</strong> email -</p>
  
  <pre><code>DEBUG: setDebug: JavaMail version ${mail.version}
  DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc.,${mail.version}]
  DEBUG IMAPS: mail.imap.fetchsize: 16384
  DEBUG IMAPS: mail.imap.ignorebodystructuresize: false
  DEBUG IMAPS: mail.imap.statuscachetimeout: 1000
  DEBUG IMAPS: mail.imap.appendbuffersize: -1
  DEBUG IMAPS: mail.imap.minidletime: 10
  DEBUG IMAPS: trying to connect to host "imap.mail.yahoo.com", port 993, isSSL true
  * OK [CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ CHILDREN XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ AUTH=PLAIN AUTH=LOGIN AUTH=XYMCOOKIE AUTH=XYMECOOKIE AUTH=XYMCOOKIEB64 AUTH=XYMPKI] IMAP4rev1 imapgate-0.7.68_14.446672 imap404.mail.bf1.yahoo.com
  DEBUG IMAPS: AUTH: PLAIN
  DEBUG IMAPS: AUTH: LOGIN
  DEBUG IMAPS: AUTH: XYMCOOKIE
  DEBUG IMAPS: AUTH: XYMECOOKIE
  DEBUG IMAPS: AUTH: XYMCOOKIEB64
  DEBUG IMAPS: AUTH: XYMPKI
  DEBUG IMAPS: protocolConnect login, host=imap.mail.yahoo.com, user=mymail@yahoo.com, password=&lt;non-null&gt;
  DEBUG IMAPS: AUTHENTICATE PLAIN command trace suppressed
  DEBUG IMAPS: AUTHENTICATE PLAIN command result: A0 OK AUTHENTICATE completed - Mailbox size in bytes is 180505
  A1 CAPABILITY
  * CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ
  A1 OK CAPABILITY completed
  imaps://mymail%40yahoo.com@imap.mail.yahoo.com
  DEBUG IMAPS: connection available -- size: 1
  A2 SELECT nsharma
  * 1 EXISTS
  * 0 RECENT
  * OK [UIDVALIDITY 1379585757] UIDs valid
  * OK [UIDNEXT 13] Predicted next UID
  * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft)] Permanent flags
  * OK [HIGHESTMODSEQ 5925277392193028104]
  A2 OK [READ-WRITE] SELECT completed; now in selected state
  Press (U) to get only unread mails OR Press (A) to get all mails:
  a
  DEBUG IMAPS: IMAPProtocol noop
  A3 NOOP
  A3 OK NOOP completed
  MAILS: 1
  A4 FETCH 1 (ENVELOPE INTERNALDATE RFC822.SIZE)
  * 1 FETCH (INTERNALDATE "19-Sep-2013 06:51:31 +0000" RFC822.SIZE 5747 ENVELOPE ("Thu, 19 Sep 2013 14:48:53 +0800 (SGT)" "test" (("Monu Jain" NIL "jainmonu_21" "yahoo.com")) (("Monu Jain" NIL "jainmonu_21" "yahoo.com")) (("Monu Jain" NIL "jainmonu_21" "yahoo.com")) (("mymail@yahoo.com" NIL "mymail" "yahoo.com")("mailmover1@yahoo.com" NIL "mailmover1" "yahoo.com")) NIL NIL NIL "&lt;1379573333.18873.YahooMailNeo@web193105.mail.sg3.yahoo.com&gt;"))
  A4 OK FETCH completed
  DATE: Thu Sep 19 12:18:53 IST 2013
  FROM: Monu Jain &lt;jainmonu_21@yahoo.com&gt;
  SUBJECT: test
  A5 FETCH 1 (BODYSTRUCTURE)
  * 1 FETCH (BODYSTRUCTURE (("text" "plain" ("charset" "utf-8") NIL NIL "quoted-printable" 348 4 NIL NIL NIL NIL)("text" "html" ("charset" "utf-8") NIL NIL "quoted-printable" 646 8 NIL NIL NIL NIL) "alternative" ("boundary" "2118110249-1131840139-1379573333=:18873") NIL))
  A5 OK FETCH completed
  CONTENT: com.sun.mail.imap.IMAPInputStream@3b0a0018
  Message Number: 1
  Message ID: &lt;1379573333.18873.YahooMailNeo@web193105.mail.sg3.yahoo.com&gt;
  A6 SEARCH HEADER Message-ID &lt;1379573333.18873.YahooMailNeo@web193105.mail.sg3.yahoo.com&gt; ALL
  * SEARCH
  A6 OK SEARCH completed
  </code></pre>
  
  <p>Similar I try with one <strong>Gmail</strong> Mail, its protocol trace is -</p>
  
  <pre><code>DEBUG: setDebug: JavaMail version ${mail.version}
  DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc.,${mail.version}]
  DEBUG: mail.imap.fetchsize: 16384
  DEBUG: mail.imap.statuscachetimeout: 1000
  DEBUG: mail.imap.appendbuffersize: -1
  DEBUG: mail.imap.minidletime: 10
  DEBUG: trying to connect to host "imap.gmail.com", port 993, isSSL true
  * OK Gimap ready for requests from 59.99.161.6 b10if5712468ibd.89
  A0 CAPABILITY
  * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN
  A0 OK Thats all she wrote! b10if5712468ibd.89
  DEBUG IMAP: AUTH: XOAUTH
  DEBUG IMAP: AUTH: XOAUTH2
  DEBUG IMAP: AUTH: PLAIN
  DEBUG IMAP: AUTH: PLAIN-CLIENTTOKEN
  DEBUG: protocolConnect login, host=imap.gmail.com, user=mymail@gmail.com, password=&lt;non-null&gt;
  DEBUG IMAP: AUTHENTICATE PLAIN command trace suppressed
  DEBUG IMAP: AUTHENTICATE PLAIN command result: A1 OK mymail@gmail.com Ronak Jain authenticated (Success)
  A2 CAPABILITY
  * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH
  A2 OK Success
  imaps://mymail%40gmail.com@imap.gmail.com
  DEBUG: connection available -- size: 1
  A3 SELECT Inbox
  * FLAGS (\Answered \Flagged \Draft \Deleted \Seen XAOL-RECEIVED XAOL-BILLPAY-MAIL XAOL-READ $hasEmbedded $hasAttached XAOL-SENT XAOL-GOODCHECK-DONE XAOL-OFFICIAL-MAIL $NotJunk NotJunk XAOL-GOOD XAOL-CERTIFIED-MAIL $Junk)
  * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen XAOL-RECEIVED XAOL-BILLPAY-MAIL XAOL-READ $hasEmbedded $hasAttached XAOL-SENT XAOL-GOODCHECK-DONE XAOL-OFFICIAL-MAIL $NotJunk NotJunk XAOL-GOOD XAOL-CERTIFIED-MAIL $Junk \*)] Flags permitted.
  * OK [UIDVALIDITY 635312281] UIDs valid.
  * 1102 EXISTS
  * 0 RECENT
  * OK [UIDNEXT 1532] Predicted next UID.
  * OK [HIGHESTMODSEQ 199446]
  A3 OK [READ-WRITE] Inbox selected. (Success)
  Press (U) to get only unread mails OR Press (A) to get all mails:
  a
  DEBUG IMAP: IMAPProtocol noop
  A4 NOOP
  A4 OK Success
  MAILS: 1102
  A5 FETCH 1 (ENVELOPE INTERNALDATE RFC822.SIZE)
  * 1 FETCH (RFC822.SIZE 57661 INTERNALDATE "02-Dec-2011 23:25:41 +0000" ENVELOPE ("Fri, 2 Dec 2011 17:35:54 -0500" "Hack Your Gadgets and Home to Teach Yourself a New Language" (("Lifehacker" NIL "email" "lifehacker.com")) (("&lt;email=lifehacker.com@mail93.us1.rsgsv.net&gt;" NIL "\"Lifehacker\"" NIL)) (("Lifehacker" NIL "email" "lifehacker.com")) ((NIL NIL "mymail" "gmail.com")) NIL NIL NIL "&lt;251e609e1dba3888b86c21cc80f7e853471.20111202223539@mail93.us1.rsgsv.net&gt;"))
  A5 OK Success
  DATE: Sat Dec 03 04:05:54 IST 2011
  FROM: Lifehacker &lt;email@lifehacker.com&gt;
  SUBJECT: Hack Your Gadgets and Home to Teach Yourself a New Language
  A6 FETCH 1 (BODYSTRUCTURE)
  * 1 FETCH (BODYSTRUCTURE (("TEXT" "PLAIN" ("CHARSET" "utf-8" "FORMAT" "fixed") NIL NIL "QUOTED-PRINTABLE" 21176 467 NIL NIL NIL)("TEXT" "HTML" ("CHARSET" "utf-8") NIL NIL "QUOTED-PRINTABLE" 33978 531 NIL NIL NIL) "ALTERNATIVE" ("BOUNDARY" "_----------=_MCPart_211467328") NIL NIL))
  A6 OK Success
  CONTENT: com.sun.mail.imap.IMAPInputStream@109fd086
  Message Number: 1
  Message ID: &lt;251e609e1dba3888b86c21cc80f7e853471.20111202223539@mail93.us1.rsgsv.net&gt;
  DEBUG IMAP: IMAPProtocol noop
  A7 NOOP
  A7 OK Success
  A8 SEARCH HEADER Message-ID &lt;251e609e1dba3888b86c21cc80f7e853471.20111202223539@mail93.us1.rsgsv.net&gt; ALL
  * SEARCH 1
  A8 OK SEARCH completed (Success)
  </code></pre>
  
  <p>folder.search(MessageIDTerm) working fine for Gmail. I found there are many differences between response returned in protocol trace by both types of server. One thing I found that the charset of both messages are different (CAPITAL response in BODYSTRUCTURE in Gmail) -</p>
  
  <pre><code>For Yahoo -- ("charset" "utf-8") 
  For Gmail -- ("CHARSET" "utf-8" "FORMAT" "fixed")
  </code></pre>
  
  <p>Does Yahoo not support search message by <strong>MessageIDTerm</strong>?? On searching about SearchTerm for Yahoo, only I found the sample about FlagTerm in case of Yahoo IMAP account.</p>
  
  <p>Does Yahoo require any other settings? OR Does Yahoo not support search for particular message ??</p>
  
  <p>UPDATE :</p>
  
  <p>I have try updating method of javaMail - 1.5 </p>
  
  <pre><code>  private int[] search(String msgSequence, SearchTerm term)
              throws ProtocolException, SearchException {
  </code></pre>
  
  <p>I passed "utf-8" in place of null it retruning message while seraching with folder.search method. The change is -</p>
  
  <pre><code>return issueSearch(msgSequence, term, "utf-8");
  </code></pre>
  
  <p>The protocol trace of one Yahoo mail is now after making above changes -</p>
  
  <pre><code>debug:
  DEBUG: setDebug: JavaMail version ${mail.version}
  DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc.,${mail.version}]
  DEBUG IMAPS: mail.imap.fetchsize: 16384
  DEBUG IMAPS: mail.imap.ignorebodystructuresize: false
  DEBUG IMAPS: mail.imap.statuscachetimeout: 1000
  DEBUG IMAPS: mail.imap.appendbuffersize: -1
  DEBUG IMAPS: mail.imap.minidletime: 10
  DEBUG IMAPS: trying to connect to host "imap.mail.yahoo.com", port 993, isSSL true
  * OK [CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ CHILDREN XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ AUTH=PLAIN AUTH=LOGIN AUTH=XYMCOOKIE AUTH=XYMECOOKIE AUTH=XYMCOOKIEB64 AUTH=XYMPKI] IMAP4rev1 imapgate-0.7.68_14.446672 imap427.mail.bf1.yahoo.com
  DEBUG IMAPS: AUTH: PLAIN
  DEBUG IMAPS: AUTH: LOGIN
  DEBUG IMAPS: AUTH: XYMCOOKIE
  DEBUG IMAPS: AUTH: XYMECOOKIE
  DEBUG IMAPS: AUTH: XYMCOOKIEB64
  DEBUG IMAPS: AUTH: XYMPKI
  DEBUG IMAPS: protocolConnect login, host=imap.mail.yahoo.com, user=mymail@yahoo.com, password=&lt;non-null&gt;
  DEBUG IMAPS: AUTHENTICATE PLAIN command trace suppressed
  DEBUG IMAPS: AUTHENTICATE PLAIN command result: A0 OK AUTHENTICATE completed - Mailbox size in bytes is 139230
  A1 CAPABILITY
  * CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ
  A1 OK CAPABILITY completed
  imaps://mymail%40yahoo.com@imap.mail.yahoo.com
  DEBUG IMAPS: connection available -- size: 1
  A2 SELECT Inbox
  * 7 EXISTS
  * 0 RECENT
  * OK [UIDVALIDITY 1379569582] UIDs valid
  * OK [UIDNEXT 12] Predicted next UID
  * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft)] Permanent flags
  * OK [HIGHESTMODSEQ 5926810751342850952]
  A2 OK [READ-WRITE] SELECT completed; now in selected state
  DEBUG IMAPS: IMAPProtocol noop
  A3 NOOP
  A3 OK NOOP completed
  MAILS: 7
  A4 FETCH 1 (ENVELOPE INTERNALDATE RFC822.SIZE)
  * 1 FETCH (INTERNALDATE "19-Sep-2013 05:57:28 +0000" RFC822.SIZE 9404 ENVELOPE ("Thu, 19 Sep 2013 11:27:07 +0530" "Fwd: Commander Report on 2013-09-13T13:38:14" (("Neelam Sharma" NIL "neelamudr" "gmail.com")) (("Neelam Sharma" NIL "neelamudr" "gmail.com")) (("Neelam Sharma" NIL "neelamudr" "gmail.com")) ((NIL NIL "mymail" "yahoo.com")(NIL NIL "mailmover1" "yahoo.com")) NIL NIL "&lt;2013042856.0.1379059694398.JavaMail.admin@machine-166&gt;" "&lt;CAJDwy1HgUQzmRYmMZRY-r9-2wCQGDcpvwR+4Chn82L+kZV1p0A@mail.gmail.com&gt;"))
  A4 OK FETCH completed
  DATE: Thu Sep 19 11:27:07 IST 2013
  A5 FETCH 1 (BODY.PEEK[HEADER.FIELDS (Message-Id)])
  * 1 FETCH (BODY[HEADER.FIELDS (MESSAGE-ID)] {84}
  Message-ID: &lt;CAJDwy1HgUQzmRYmMZRY-r9-2wCQGDcpvwR+4Chn82L+kZV1p0A@mail.gmail.com&gt;
  
  )
  A5 OK FETCH completed
  Headers: [Ljava.lang.String;@13e1329e
  FROM: Neelam Sharma &lt;neelamudr@gmail.com&gt;
  SUBJECT: Fwd: Commander Report on 2013-09-13T13:38:14
  A6 FETCH 1 (BODYSTRUCTURE)
  * 1 FETCH (BODYSTRUCTURE (("text" "plain" ("charset" "iso-8859-1") NIL NIL "7bit" 2288 52 NIL NIL NIL NIL)("text" "html" ("charset" "iso-8859-1") NIL NIL "quoted-printable" 3408 55 NIL NIL NIL NIL) "alternative" ("boundary" "001a1130ca2e86248804e6b63a47") NIL))
  A6 OK FETCH completed
  CONTENT: com.sun.mail.imap.IMAPInputStream@fd49559
  Message Number: 1
  Message ID: &lt;CAJDwy1HgUQzmRYmMZRY-r9-2wCQGDcpvwR+4Chn82L+kZV1p0A@mail.gmail.com&gt;
  A7 SEARCH CHARSET utf-8 HEADER Message-ID &lt;CAJDwy1HgUQzmRYmMZRY-r9-2wCQGDcpvwR+4Chn82L+kZV1p0A@mail.gmail.com&gt; ALL
  A7 NO [BADCHARSET] SEARCH SEARCH error: charset not supported
  DEBUG IMAPS: IMAPProtocol noop
  A8 NOOP
  A8 OK NOOP completed
  A9 SEARCH CHARSET utf-8 HEADER Message-ID &lt;CAJDwy1HgUQzmRYmMZRY-r9-2wCQGDcpvwR+4Chn82L+kZV1p0A@mail.gmail.com&gt; 1:7
  A9 NO [BADCHARSET] SEARCH SEARCH error: charset not supported
  A10 FETCH 2 (BODY.PEEK[HEADER.FIELDS (Message-ID)])
  * 2 FETCH (BODY[HEADER.FIELDS (MESSAGE-ID)] {84}
  Message-ID: &lt;CAJDwy1EG+w_toT+L1yRW3+FxdFULUq_7o-7jX_NdW9H8PCDuFA@mail.gmail.com&gt;
  
  )
  A10 OK FETCH completed
  A11 FETCH 3 (BODY.PEEK[HEADER.FIELDS (Message-ID)])
  * 3 FETCH (BODY[HEADER.FIELDS (MESSAGE-ID)] {84}
  Message-ID: &lt;CAJDwy1EbOgtCQj+PzrYzifFZwbOvShV6LTzZ+CJBRGm+xZhvvg@mail.gmail.com&gt;
  
  )
  A11 OK FETCH completed
  A12 FETCH 4 (BODY.PEEK[HEADER.FIELDS (Message-ID)])
  * 4 FETCH (BODY[HEADER.FIELDS (MESSAGE-ID)] {84}
  Message-ID: &lt;CAJDwy1Fr_HRMAmJKBoUEC+UfkArSvDPFrL8UZCyM8rMkt7uGGQ@mail.gmail.com&gt;
  
  )
  A12 OK FETCH completed
  A13 FETCH 5 (BODY.PEEK[HEADER.FIELDS (Message-ID)])
  * 5 FETCH (BODY[HEADER.FIELDS (MESSAGE-ID)] {76}
  Message-ID: &lt;1379573294.59617.YahooMailNeo@web193103.mail.sg3.yahoo.com&gt;
  
  )
  A13 OK FETCH completed
  A14 FETCH 6 (BODY.PEEK[HEADER.FIELDS (Message-ID)])
  * 6 FETCH (BODY[HEADER.FIELDS (MESSAGE-ID)] {76}
  Message-ID: &lt;1379573283.17330.YahooMailNeo@web193105.mail.sg3.yahoo.com&gt;
  
  )
  A14 OK FETCH completed
  A15 FETCH 7 (BODY.PEEK[HEADER.FIELDS (Message-ID)])
  * 7 FETCH (BODY[HEADER.FIELDS (MESSAGE-ID)] {76}
  Message-ID: &lt;1379573333.18873.YahooMailNeo@web193105.mail.sg3.yahoo.com&gt;
  
  )
  A15 OK FETCH completed
  Found message #0: Fwd: Commander Report on 2013-09-13T13:38:14
  Message: com.sun.mail.imap.IMAPMessage@3b733273
  FROM12: Neelam Sharma &lt;neelamudr@gmail.com&gt;
  SUBJECT12: Fwd: Commander Report on 2013-09-13T13:38:14
  CONTENT12: com.sun.mail.imap.IMAPInputStream@6e912008
  Message Number12: 1
  Message ID12: &lt;CAJDwy1HgUQzmRYmMZRY-r9-2wCQGDcpvwR+4Chn82L+kZV1p0A@mail.gmail.com&gt;
  ******************************************
  </code></pre>
  
  <p>Is it a proper way to getting message ??</p>
  
  <p>EDITED : Overwritten the method match() of SearchTerm class as to match messageID-</p>
  
  <pre><code>SearchTerm messageIDTerm= new SearchTerm() {
                      @Override
                      public boolean match(Message message) {
                          try {
                              if (((MimeMessage) message).getMessageID().contains(sMessageId)) {
                                  return true;
                              }
                          } catch (MessagingException ex) {
                              ex.printStackTrace();
                          }
                          return false;
                      }
                  };
  
                  msgs = folder.search(messageIDTerm);
  </code></pre>
  
  <p>This search returns message given by message-ID.  </p>
  
  <p>Thanks</p>
  
  <p>Neelam Sharma</p>