我的是使用outlook发送邮件时候出现这个问题的,修复之后的代码如下
private void initOutlook(String username, String password, String smtpHostName) {
System.err.println("initOutlook....");
boolean isSSL = true;
// SSL加密
MailSSLSocketFactory mailSSLSocketFactory;
try {
mailSSLSocketFactory = new MailSSLSocketFactory();
mailSSLSocketFactory.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory);
} catch (GeneralSecurityException e) {
System.err.println(e.getMessage());
} // 可能会有异常,添加抛出异常
// 初始化props
props.put("mail.smtp.ssl.enable", isSSL); // 指定使用SSL方式发送
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.host", "smtp.office365.com");
props.put("mail.smtp.timeout", "25000");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.port", "587");
props.put("mail.smtp.socketFactory.fallback", "true");
// props.put("mail.smtp.auth", "false");
props.put("mail.smtp.ssl.enable", "false");
// props.put("mail.smtp.auth.mechanisms", "NTLM");
props.put("mail.debug", "true");
props.put("mail.transport.protocol", "smtp"); // 发邮件协议
System.out.println(smtpHostName);
// 验证
authenticator = new MailAuthenticator(username, "weblearn123");
// 创建session
// session = Session.getInstance(props);
session = Session.getInstance(props, authenticator);
}
其实解决就是把上面的
props.put("mail.smtp.auth.mechanisms", "NTLM");
注释掉了就好了!
当然我还遇到了很多问题,我都不想说了,害,比如:
530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
我是添加如下代码解决的
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.port", "587");
props.put("mail.smtp.socketFactory.fallback", "true");
大佬们轻点喷,如果需要其他上面类用到的文件可以留言,谢谢!