解决报错:com.sun.mail.smtp.SMTPSendFailedException: 451 5.7.3 STARTTLS is required to send mail

在使用Apache Commons Email依赖通过微软 Outlook邮箱发送邮件时连接服务器失败并抛出了这个异常


查看该依赖源码后发现有email.setStartTLSEnabled()这个方法,于是试着启用了以下,然后成功解决了问题


email.setStartTLSEnabled(true);

问题分析:在使用ApacheCommonsEmail及之外的其他邮箱操作依赖时,发生此报错也都是因为没有开启STRATTLS,只要开启就能解决问题。

修改前的代码


    public void sendEmail() throws EmailException {
        HtmlEmail email = new HtmlEmail();
        email.setCharset("utf-8");
        email.setHostName("smtp.office365.com");
        email.setSmtpPort(587);
        email.setFrom("[email protected]","Star_Collecter");
        email.setAuthentication("[email protected]","adhrwjskwixyfrlb");
        email.addTo("[email protected]");
        email.setSubject("标题");
        email.setMsg("测试内容
测试内容
测试内容
测试内容"); email.send(); }

修改后的代码


    public void sendEmail() throws EmailException {
        HtmlEmail email = new HtmlEmail();
        email.setCharset("utf-8");
        email.setHostName("smtp.office365.com");
        email.setSmtpPort(587);
        email.setStartTLSEnabled(true);//添加的代码
        email.setFrom("[email protected]","Star_Collecter");
        email.setAuthentication("[email protected]","adhrwjskwixyfrlb");
        email.addTo("[email protected]");
        email.setSubject("标题");
        email.setMsg("测试内容
测试内容
测试内容
测试内容"); email.send(); }

你可能感兴趣的:(报错解决,java,spring,经验分享)