标签:protected pack oauth method ide username tps date pre
日志信息:
DEBUG SMTP: AUTH LOGIN command trace suppressed DEBUG SMTP: AUTH LOGIN succeeded DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] DEBUG SMTP: need username and password for authentication DEBUG SMTP: protocolConnect returning false, host=smtp.sina.com, user=fyf, password=<null> javax.mail.AuthenticationFailedException: failed to connect, no password specified?
显示登录成功但是发送需要认证(need username and password for authentication)
所以session获取方法需要修改,添加认证信息
Session session = Session.getInstance(prop);
改为
Session session = Session.getDefaultInstance(prop,new SimpleAuthenticator(USERNAME,PASSWORD));
其中SimpleAuthenticator类需要继承javax.mail.Authenticator;
因为javax.mail.Authenticator;并没有实现getPasswordAuthentication()方法,根据Authenticator中对该方法的描述
/**
* Called when password authentication is needed. Subclasses should
* override the default implementation, which returns null. <p>
*
* Note that if this method uses a dialog to prompt the user for this
* information, the dialog needs to block until the user supplies the
* information. This method can not simply return after showing the
* dialog.
* @return The PasswordAuthentication collected from the
* user, or null if none is provided.
*/
protected PasswordAuthentication getPasswordAuthentication() {
return null;
}
当需要密码认证是会被调用,子类必须实现该方法,并返回PasswordAuthentication,重写代码如下
代码如下
package com.taotao.common.utils;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class SimpleAuthenticator extends Authenticator {
private String username;
private String password;
public SimpleAuthenticator(String username, String password) {
super();
this.username = username;
this.password = password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// TODO Auto-generated method stub
return new PasswordAuthentication(username, password);
}
}
再次运行发送成功
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 DEBUG SMTP: Using mechanism LOGIN DEBUG SMTP: AUTH LOGIN command trace suppressed DEBUG SMTP: AUTH LOGIN succeeded DEBUG SMTP: use8bit false MAIL FROM:<yonglai_zhuce@sina.com> 250 ok RCPT TO:<truthmustdie@163.com> 250 ok DEBUG SMTP: Verified Addresses DEBUG SMTP: truthmustdie@163.com DATA 354 End data with <CR><LF>.<CR><LF> Date: Fri, 14 Dec 2018 20:26:37 +0800 (CST) From: yonglai_zhuce@sina.com To: truthmustdie@163.com
标签:protected pack oauth method ide username tps date pre
原文地址:https://www.cnblogs.com/annofyf/p/10121554.html