问题:生产邮件服务器邮件发送失败,异常如下:
endcn.hutool.extra.mail.MailException: AuthenticationFailedException: 535 5.7.3 Authentication unsuccessful [HK0PR01CA0071.apcprd01.prod.exchangelabs.com]
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN XOAUTH2"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "BINARYMIME", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
DEBUG SMTP: protocolConnect login, host=******, user=******, password=<non-null>
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 failed
endcn.hutool.extra.mail.MailException: AuthenticationFailedException: 535 5.7.3 Authentication unsuccessful [HK0PR01CA0071.apcprd01.prod.exchangelabs.com]
分析:
试了各种邮箱都OK,个人微软邮箱也OK,唯独公司微软邮箱不行。研究下来,我认为是公司邮箱服务器认证设置问题,可惜没权限看~~
网上搜了一下,很多道友类似问题,却没什么解决方案测试通过。特别迷茫~
代码:
Demo自定义了邮箱配置,QQ,163邮箱测试OK,office365公司邮箱 emmmm...
顺便推荐下Hutool工具类
package test;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;
import java.nio.charset.Charset;
import java.util.ArrayList;
/**
* @Description MailDemo
* @author
* @create 2019/11/5 16:53
*/
public class MailDemo {
public static void main(String[] args) {
ArrayList<String> tos = CollUtil.newArrayList("******@qq.com");
String subject = "Dear";
String content = "Mail Test.";
try {
MailUtil.send(getMailAccount(), tos, subject, content, false, null);
} catch (Exception e) {
System.out.println("end" + e);
}
}
/**
* 初始化邮箱服务器配置
*
* @return
*/
private static MailAccount getMailAccount() {
MailAccount mailAccount = new MailAccount();
mailAccount.setCharset(Charset.defaultCharset());
mailAccount.setDebug(true);
mailAccount.setHost("smtp.office365.com");
mailAccount.setPort(587);
mailAccount.setFrom("******@com.cn");
mailAccount.setAuth(true);
// 分析问题点,公司邮箱
mailAccount.setUser("******@com.cn");
mailAccount.setPass("******");
mailAccount.setStartttlsEnable(true);
mailAccount.setSslEnable(true);
mailAccount.setSocketFactoryFallback(true);
mailAccount.setSocketFactoryClass("javax.net.ssl.SSLSocketFactory");
mailAccount.setSocketFactoryPort(587);
return mailAccount;
}
}TODO...
更新!
解决:使用公司组织未开启双重验证邮箱,发送正常。
重现office365邮箱服务器发送邮箱如下5种场景如下:
1. A公司组织邮箱smtp.office365.com作为服务器发送正常,账号未开启双重验证不确定;
2. B公司组织邮箱smtp.office365.com作为服务器发送失败;
3. B公司组织邮箱smtp.partner.outlook.cn作为服务器发送失败;
4. 个人OUTLOOK邮箱smtp.office365.com作为服务器未开启双重验证发送正常;
5. 个人OUTLOOK邮箱smtp.office365.com作为服务器开启双重验证发送失败。
版权声明:本文为OliverCaro原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。