我可以按照 谷歌示例.
但现在的问题是我无法发送邮件.每当我尝试发送邮件时,我都会收到以下错误.
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.
com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 support.google/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)首先我无法连接到本地主机,因此我在会话的属性中添加了几行代码,如下面的 OAuth2Authenticator 类,仍然成功验证.但发不出邮件.
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.
props.put("mail.smtp.host", "smtp.gmail"); props.put("mail.smtp.port", "587");我正在使用相同的会话对象和 SMTP 传输对象,当我第一次成功进行身份验证时,它将从 OAuth2Authenticator 类返回.
I am using the same session object and SMTP transport object which will be returned from OAuth2Authenticator class when I first authenticated successfully.
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);完整的调试日志
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", port 587, isSSL false 220 mx.google ESMTP gj1sm1027169pbc.11 - gsmtp DEBUG SMTP: connected to host "smtp.gmail", port: 587 EHLO E6410-PC 250-mx.google 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 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", port 587, isSSL false 220 mx.google ESMTP az8sm1466819pab.3 - gsmtp DEBUG SMTP: connected to host "smtp.gmail", port: 587 EHLO E6410-PC 250-mx.google 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 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:<user@gmail> 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 support.google/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 support.google/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 support.google/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)我现在像这样明确地调用 AUTH 命令.
Edited: I now called AUTH command explicitly like that .
byte[] response = String.format("user=%s1auth=Bearer %s11", emailAddress, accessToken.getToken()).getBytes(); response = BASE64EncoderStream.encode(response); System.out.println("token check : " + new String(response)); transport.issueCommand("AUTH XOAUTH2 " + new String(response), 235);但反应还是一样.
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", port 587, isSSL false 220 mx.google ESMTP kl3sm6965596pbc.15 - gsmtp DEBUG SMTP: connected to host "smtp.gmail", port: 587 EHLO E6410-PC 250-mx.google 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 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", port 587, isSSL false 220 mx.google ESMTP vo6sm6969236pbc.8 - gsmtp DEBUG SMTP: connected to host "smtp.gmail", port: 587 EHLO E6410-PC 250-mx.google 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 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:<user@gmail> 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 support.google/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 support.google/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 support.google/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 support.google/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) 推荐答案对不起,答案在这里:Javamail api in android using XOauth 我测试过,它可以工作.
Sorry people, answer is here: Javamail api in android using XOauth I tested, it works.
SMS 样式登录"失败 - 使用 2 步登录(通过电话 SMS)的安全帐户拒绝通过 SMTP 发送电子邮件(RAW 密码和 OAuth 样式,失败并出现身份验证错误).他们将允许您创建 OAuth 令牌,但不会发送电子邮件.
"SMS style login" failure - Secure accounts with 2 step login (via phone SMS) reject sending email via SMTP (both RAW password & OAuth style, fail with a Authentication error). They will let you create the OAuth token but will not send email.
更多推荐
通过 SMTP Gmail Oauth2 问题发送邮件
发布评论