title: send mail via SMTP Gmail Oauth2 issue
body: <p>I can authenticated to SMTP by following <a href="http://code.google.com/p/google-mail-oauth2-tools/source/browse/trunk/java/com/google/code/samples/oauth2/OAuth2Authenticator.java" rel="nofollow">the google example</a>.</p>
  
  <p>But the problem now is I can't send out the mail. I am getting the following error whenever I try to send out mail.</p>
  
  <pre><code>com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 f5sm19578172pav.22
  
      at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2114)
      at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1618)
      at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1119)
      at javax.mail.Transport.send0(Transport.java:195)
      at javax.mail.Transport.send(Transport.java:124)
  </code></pre>
  
  <p>First I am getting can't connect to local host , thus I added a few lines of code to propery of session like below to OAuth2Authenticator class , still authenicated successfully. But can't send out the mail.</p>
  
  <pre><code>props.put("mail.smtp.host", "smtp.gmail.com");
  props.put("mail.smtp.port", "587");
  </code></pre>
  
  <p>I am using the <strong>same session object and SMTP transport object</strong> which will be returned from OAuth2Authenticator class when I first authenticated successfully.</p>
  
  <pre><code>            Message message = new MimeMessage(session);
  
  
          message.setFrom(new InternetAddress(msg.getFrom()));
          message.setRecipients(Message.RecipientType.TO,
              InternetAddress.parse(msg.getTo()));
          message.setSubject(msg.getSubject());
          message.setText(msg.getBody());
  
          transport.send(message);
  </code></pre>
  
  <p>Full Debug Log</p>
  
  <pre><code>DEBUG: setDebug: JavaMail version 1.4.5
  DEBUG SMTP: enable SASL
  DEBUG SMTP: useEhlo true, useAuth false
  DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
  220 mx.google.com ESMTP gj1sm1027169pbc.11 - gsmtp
  DEBUG SMTP: connected to host "smtp.gmail.com", port: 587
  
  EHLO E6410-PC
  250-mx.google.com at your service, [202.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-STARTTLS
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "STARTTLS", arg ""
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  STARTTLS
  220 2.0.0 Ready to start TLS
  EHLO E6410-PC
  250-mx.google.com at your service, [202.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH XOAUTH2"
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  DEBUG SMTP: Authenticate with SASL
  DEBUG SMTP: SASL mechanisms allowed: XOAUTH2
  DEBUG SMTP: SASL AUTH command trace suppressed
  DEBUG SMTP SASL: Mechanisms: XOAUTH2
  DEBUG SMTP SASL: SASL client XOAUTH2
  DEBUG SMTP SASL: callback length: 1
  DEBUG SMTP SASL: callback 0: javax.security.auth.callback.NameCallback@100ab23
  DEBUG SMTP SASL: no response
  Successfully authenticated to SMTP.
  NOOP
  250 2.0.0 OK gj1sm1027169pbc.11 - gsmtp
  Is SMTP still connected: true
  DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
  DEBUG SMTP: enable SASL
  DEBUG SMTP: useEhlo true, useAuth false
  DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
  220 mx.google.com ESMTP az8sm1466819pab.3 - gsmtp
  DEBUG SMTP: connected to host "smtp.gmail.com", port: 587
  
  EHLO E6410-PC
  250-mx.google.com at your service, [202.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-STARTTLS
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "STARTTLS", arg ""
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  STARTTLS
  220 2.0.0 Ready to start TLS
  EHLO E6410-PC
  250-mx.google.com at your service, [202.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH XOAUTH2"
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  DEBUG SMTP: use8bit false
  MAIL FROM:&lt;user@gmail.com&gt;
  530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 az8sm1466819pab.3 - gsmtp
  DEBUG SMTP: got response code 530, with response: 530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 az8sm1466819pab.3 - gsmtp
  
  RSET
  250 2.1.5 Flushed az8sm1466819pab.3 - gsmtp
  DEBUG SMTP: MessagingException while sending
  com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 az8sm1466819pab.3 - gsmtp
  
      at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2114)
      at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1618)
      at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1119)
      at javax.mail.Transport.send0(Transport.java:195)
  </code></pre>
  
  <p>Edited:
  I now called AUTH command explicitly like that .</p>
  
  <pre><code> byte[] response = String.format("user=%s\1auth=Bearer %s\1\1",
                      emailAddress, accessToken.getToken()).getBytes();
              response = BASE64EncoderStream.encode(response);
              System.out.println("token check : " + new String(response));
  
              transport.issueCommand("AUTH XOAUTH2 " + new String(response), 235);
  </code></pre>
  
  <p>but the response still the same.</p>
  
  <pre><code>DEBUG: setDebug: JavaMail version 1.4.5
  DEBUG SMTP: enable SASL
  DEBUG SMTP: useEhlo true, useAuth false
  DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
  220 mx.google.com ESMTP kl3sm6965596pbc.15 - gsmtp
  DEBUG SMTP: connected to host "smtp.gmail.com", port: 587
  
  EHLO E6410-PC
  250-mx.google.com at your service, [xxx.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-STARTTLS
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "STARTTLS", arg ""
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  STARTTLS
  220 2.0.0 Ready to start TLS
  EHLO E6410-PC
  250-mx.google.com at your service, [xxx.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH XOAUTH2"
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  Successfully authenticated to SMTP.
  token check : abcdefgFuYUBnbWFpbC5jb20BYXV0aD1CZWabcdefgSEVTNlpUVlFTUXZfblZfZ01FaDF6WWtSQ2kzb1d5RElFQ19mb2NmWG5Sam93RUlBYVJRTldfNwEB
  AUTH XOAUTH2 abcdefgFuYUBnbWFpbC5jb20BYXV0aD1CZWabcdefgSEVTNlpUVlFTUXZfblZfZ01FaDF6WWtSQ2kzb1d5RElFQ19mb2NmWG5Sam93RUlBYVJRTldfNwEB
  235 2.7.0 Accepted
  NOOP
  250 2.0.0 OK kl3sm6965596pbc.15 - gsmtp
  Is SMTP still connected: true
  DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
  DEBUG SMTP: enable SASL
  DEBUG SMTP: useEhlo true, useAuth false
  DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
  220 mx.google.com ESMTP vo6sm6969236pbc.8 - gsmtp
  DEBUG SMTP: connected to host "smtp.gmail.com", port: 587
  
  EHLO E6410-PC
  250-mx.google.com at your service, [xxx.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-STARTTLS
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "STARTTLS", arg ""
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  STARTTLS
  220 2.0.0 Ready to start TLS
  EHLO E6410-PC
  250-mx.google.com at your service, [xxx.xxx.xxx.xxx]
  250-SIZE 35882577
  250-8BITMIME
  250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
  250 ENHANCEDSTATUSCODES
  DEBUG SMTP: Found extension "SIZE", arg "35882577"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH XOAUTH2"
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  DEBUG SMTP: use8bit false
  MAIL FROM:&lt;user@gmail.com&gt;
  530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 vo6sm6969236pbc.8 - gsmtp
  DEBUG SMTP: got response code 530, with response: 530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 vo6sm6969236pbc.8 - gsmtp
  
  RSET
  250 2.1.5 Flushed vo6sm6969236pbc.8 - gsmtp
  DEBUG SMTP: MessagingException while sending
  com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 vo6sm6969236pbc.8 - gsmtp
  
      at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2114)
      at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1618)
      at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1119)
      at javax.mail.Transport.send0(Transport.java:195)
      at javax.mail.Transport.send(Transport.java:124)
  
  QUIT
  221 2.0.0 closing connection vo6sm6969236pbc.8 - gsmtp
  com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
  530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 vo6sm6969236pbc.8 - gsmtp
  
      at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2114)
      at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1618)
      at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1119)
      at javax.mail.Transport.send0(Transport.java:195)
      at javax.mail.Transport.send(Transport.java:124)
  </code></pre>