title: How to receive email from hotmail via IMAP and OAuth?
body: <p>I want to receive Email from Hotmail by IMAP, but I have to authenticate by OAuth. From the Microsoft documentation, it supports that, <a href="http://msdn.microsoft.com/en-us/library/dn440163.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/dn440163.aspx</a>;</p>
  
  <p>But I have to idea how to use it in java (by Javamail). I tried to use google code sample (correct email and access_toket), but failed.</p>
  
  <pre><code>String email = "stony@hotmail.com";
  String oauthToken = "XXXXXXXX";
  
  initialize();
  
  IMAPStore imapStore = connectToImap("imap-mail.outlook.com",
                                      993,
                                      email,
                                      oauthToken,
                                      true);
  System.out.println("Successfully authenticated to IMAP.\n");
  
  
  Folder folder =  imapStore.getDefaultFolder();
  folder.open(Folder.READ_ONLY);  //****The linke throw exception****
  for (Message msg : folder.getMessages()) {
      String subject = msg.getSubject();
      System.out.println(":" + subject);
  }
  </code></pre>
  
  <p>The log printed on system console is,</p>
  
  <pre><code>DEBUG: setDebug: JavaMail version 1.4
  DEBUG: mail.imap.fetchsize: 16384
  DEBUG: enable SASL
  DEBUG: SASL mechanisms allowed: XOAUTH2
  * OK Outlook.com IMAP4rev1 server version 17.4.0.0 ready (DUB451-IMAP183)
  A0 CAPABILITY
  * CAPABILITY IMAP4rev1 CHILDREN ID NAMESPACE UIDPLUS UNSELECT AUTH=PLAIN AUTH=XOAUTH2 SASL-IR
  A0 OK CAPABILITY completed
  IMAP DEBUG: AUTH: PLAIN
  IMAP DEBUG: AUTH: XOAUTH2
  DEBUG: protocolConnect login, host=imap-mail.outlook.com, user=mebeautyful@hotmail.com, password=&lt;non-null&gt;
  IMAP SASL DEBUG: Mechanisms: XOAUTH2
  IMAP SASL DEBUG: SASL client XOAUTH2
  A1 AUTHENTICATE XOAUTH2
  + 
  IMAP SASL DEBUG: challenge:  :
  IMAP SASL DEBUG: callback length: 1
  IMAP SASL DEBUG: callback 0: javax.security.auth.callback.NameCallback@61ead9ba
  IMAP SASL DEBUG: response: user=mebeautyful@hotmail.comauth=Bearer 
  
  DEBUG: connection available -- size: 1
  A2 EXAMINE ""
  A1 NO [AUTHENTICATIONFAILED] OAuth authentication failed.
  A2 BAD Examine Command is not permitted in current state (NotAuthenticated)
  A3 LOGOUT
  * BYE Logout requested
  Exception in thread "main" javax.mail.MessagingException: A2 BAD Examine Command is not permitted in current state (NotAuthenticated);
    nested exception is:
      com.sun.mail.iap.BadCommandException: A2 BAD Examine Command is not permitted in current state (NotAuthenticated)
      at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:829)
      at com.google.code.samples.oauth2.OAuth2Authenticator.main(OAuth2Authenticator.java:155)
  Caused by: com.sun.mail.iap.BadCommandException: A2 BAD Examine Command is not permitted in current state (NotAuthenticated)
      at com.sun.mail.iap.Protocol.handleResult(Protocol.java:296)
      at com.sun.mail.imap.protocol.IMAPProtocol.examine(IMAPProtocol.java:636)
      at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:811)
      ... 1 more
  </code></pre>