关于Javamail发送邮件,收件人是个人可以接收,如果收件人是群组,提示发送成功,群组内成员收不到邮件。(邮箱outlook)
本人这几天在使用springboot做一个发送邮件的功能,一开始针对收件人为个人时,可以发送成功,并且收件人也可以收到邮件,但是新建了一个群组,把相关收件人添加到该群组中,结果一个也收不到邮件,可是返回信息的发送成功。
控制台返回信息:
在此之前,使用.net同样调用ExChange的API,没有出现此类的问题,可以直接发送成功,本人猜测是因为.net和Exchange都是属于微软的,所以在很多技术上都是通的,相互依赖的,为javamail属于第三方API,会有一些差别。
百度搜了一大堆,也没找到具体的解决办法,并且有很多误导性的答案,无力吐槽。以下方法是本人亲测有用的,如果有类似的同学参考此方法,解决了烦请回来给个评论,好的坏的都会参考。或者有更好的能够提供最好,相互学习。
发送邮件的代码就不贴了,因为有些涉及公司的信息,把配置信息贴出如下
给出文字版,方便拷贝:
properties.setProperty(“mail.smtp.host”, mailHost);//要连接的SMTP服务器
properties.setProperty(“mail.transport.protocol”, “smtp”);// 发送邮件协议名称
properties.setProperty(“mail.smtp.auth”, “true”);//是否开启身份验证
properties.setProperty(“mail.smtp.socketFactory.class”, “javax.net.ssl.SSLSocketFactory”);
properties.setProperty(“mail.smtp.port”, “25”);
properties.setProperty(“mail.smtp.socketFactory.port”, “25”);
properties.setProperty(“mail.smtp.ssl.trust”, mailHost);
properties.setProperty(“mail.smtp.starttls.enable”, “true”);//是否将纯文本连接升级为加密连接(TLS或SSL)
properties.setProperty(“mail.smtp.ssl.checkserveridentity”, “false”);// 不做服务器证书校验
properties.setProperty(“mail.smtp.timeout”, “80000”);//超时
session = Session.getInstance(properties, null);// 获取session实体对象
session.setDebug(true);// 开启调试信息
---------------------可以百度搜索javamail邮件发送,案例很多--------------
这里配置没问题,可以发送邮件就可以了,接下来测试发送给群组账号发送,返回发送成功,但是接收做推送的邮箱会返回图中信息,“由于限制传递到此,无法传递您的邮件”
具体的原因从返回的信息中看不出来,但是解决的办法就是在邮件服务器上对收件的群组修改图中,取消勾选的要求所有发件人通过身份验证即可。
以上就是本人提供的解决办法,并且测试有用,如有更好的办法可评论区留下您的意见。
如需转载,请标明出处! | |
---|---|