admin 管理员组文章数量: 887007
javaMail 发送邮件遇到的奇葩问题Invalid Addresses
一个发邮件的服务的功能:
mail.smtp.auth=true
这个配置 设置为true时,就能正常发送
设置为false时,就报错
org.springframework.mail.MailSendException: Failed messages: javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
也是很神奇的一件事
设置true时:(需要进行用户名授权码验证),测试邮件发送时报错。
报错的原因可能是:
- 用户名不正确
- 授权码不正确
JavaMailSenderImpl sender=new JavaMailSenderImpl();
sender.setPassword("") //该密码是授权码,而不是邮箱的登陆密码
启用授权码,避免密码泄漏造成邮箱安全隐患,使用授权码是可以访问邮箱的部分功能(发邮件)。使用授权码是无法登陆邮箱的.
设置false时:
其实如果设置 mail.smtp.auth为false,但是如果用户名和密码都不为空,也可能会进行校验的。
因为正是和服务器连接之前,会收集服务器的扩展参数。
如果服务器支持校验而且也设置了用户名和密码,即便mail.smtp.auth为false,也会进行验证。
这里后面有机会研究源码再补充一下,先欠着留个坑待填!!!
测试类先附上
@Testpublic void test1() throws Exception {MimeMessage message = this.javaMailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");helper.setFrom(this.mailSender);helper.setTo("1751607968@qq");//helper.setSubject(String.format("%s【%s】", "订单类型", LocalDate.now().minusDays(1).format(DateTimeFormatter.ISO_DATE)));helper.setText("测试邮件");} catch (MessagingException e) {//log.error("组装异常对账订单信息邮件时失败!", e);}try {this.javaMailSender.send(message);} catch (MailSendException se) {//log.error("组装异常对账订单信息邮件时失败!", e);Exception[] messageExceptions = se.getMessageExceptions();SendFailedException sendFail;try {sendFail = (SendFailedException) messageExceptions[0];} catch (ClassCastException e) {//log.error("class cast exception:[{}]", e.getMessage());return;}//log.error("send mail eerror,the invalid mail address:{}", sendFail.getInvalidAddresses());Address[] address = sendFail.getValidUnsentAddresses();if (null == address) {return;}String[] validMails = new String[address.length];for (int i = 0; i < address.length; i++) {validMails[i] = String.valueOf(address[i]);}}}
本文标签: javaMail 发送邮件遇到的奇葩问题Invalid Addresses
版权声明:本文标题:javaMail 发送邮件遇到的奇葩问题Invalid Addresses 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732353864h1533875.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论