您的位置:首页 > 汽车 > 新车 > 国外采购平台_嘉兴企业自助建站_优化关键词的正确方法_如何在互联网上做推广

国外采购平台_嘉兴企业自助建站_优化关键词的正确方法_如何在互联网上做推广

2025/5/3 17:26:10 来源:https://blog.csdn.net/weilikk/article/details/146279524  浏览:    关键词:国外采购平台_嘉兴企业自助建站_优化关键词的正确方法_如何在互联网上做推广
国外采购平台_嘉兴企业自助建站_优化关键词的正确方法_如何在互联网上做推广

一、背景

  1、框架和语言:SpringMVC、Java

  2、使用的是Outlook邮箱服务器,由外地公司邮箱管理员管理(不好沟通)。

  3、需求:系统根据业务需求自动发邮件到员工邮箱。

二、走的弯路

    刚开始我直接用以前用过的org.springframework.mail.javamail.JavaMailSenderImpl实现,报错类似

Caused by: javax.mail.AuthenticationFailedException: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://XXXX for more information. [HK2PR04CA0071.apcprd04.prod.outlook.com]
AI问了一通大概意思是需要邮箱管理员开启一下SMTP协议,使能够启用身份验证的客户SMTP提交(SMTP Auth)。

      找了管理员,他也找不到这个设置,没办法开启。又搜索+AI问了一通得知Outlook邮箱的安全验证问题,可以用 exchange协议解决。

三、核心代码

pom.xml添加ews包

  <dependency><groupId>com.microsoft.ews-java-api</groupId><artifactId>ews-java-api</artifactId><version>2.0</version></dependency>
package ...import ....@Component("eMailHandler")
public class EMailHandler {private static Logger logger = LoggerFactory.getLogger(EMailHandler.class);public boolean sendEMail(MailModel mailModel){try{ExchangeService service = new ExchangerServiceSSLVerify(ExchangeVersion.Exchange2010_SP2);ExchangeCredentials credentials = new WebCredentials(mailModel.getMailFrom(), mailModel.getMailPassword());service.setCredentials(credentials);service.setUrl(new URI("https://" + mailModel.getMailHost() + "/EWS/Exchange.asmx"));//        service.setTraceEnabled(true);  //是否启用ExchangeService的跟踪功能,用于调试EmailMessage msg = new EmailMessage(service);msg.setSubject(mailModel.getSubjectName());// 设置邮件内容并添加签名StringBuilder contentWithSignature = new StringBuilder(mailModel.getContent());contentWithSignature.append("<br/><br/>");contentWithSignature.append("------------------------------------<br/>");if (mailModel.getSigns() != null && mailModel.getSigns().length > 0) {for (String signText : mailModel.getSigns()) {contentWithSignature.append(signText).append("<br/>");}}msg.setBody(MessageBody.getMessageBodyFromText(contentWithSignature.toString()));for (String mailTo : mailModel.getMailTo()){msg.getToRecipients().add(mailTo);   //接受人邮箱}msg.sendAndSaveCopy();  //发送现有电子邮件并保存到已发送} catch (Exception e) {logger.error("******sendEMail邮件发送异常*******", e);return false;}return true;}}
mailModel.getMailFrom() 负责发送邮件的邮箱地址
mailModel.getMailPassword()) 邮箱账号密码
mailModel.getMailHost() 邮箱服务器
mailModel.getSubjectName() 标题/主题
mailModel.getContent() 内容
mailModel.getSigns() 签名
mailModel.getMailTo() 邮件接收人邮箱地址数组

四、遇到的错误

在网上找到的代码,其中有一行在创建WebCredentials的时候使用的构造函数是三个参数的,最后一位是mailModel.getDomain()是邮箱服务器域名:

 ExchangeCredentials credentials = new WebCredentials(mailModel.getMailFrom(), mailModel.getMailPassword(),mailModel.getDomain());

报错如下:

可能域名配置得不对,也不清楚应该是多少,直接去掉这个参数就没问题了!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com