【业务异常】Javamail实现基于微软office365发送邮件失败坑 异常:535 5.7.3 Authentication unsuccessful

 问题:生产邮件服务器邮件发送失败,异常如下:

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版权协议,转载请附上原文出处链接和本声明。