spring boot mail发送邮件异常解决
问题描述
DEBUG: JavaMail version 1.6.1
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "smtp.163.com", port 465, isSSL false
DEBUG SMTP: EOF: [EOF]
DEBUG SMTP: could not connect to host "smtp.163.com", port: 465, response: -1
2021-06-02 16:35:42.323 ERROR 11141 --- [nio-8999-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 465, response: -1. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 465, response: -1; message exceptions (1) are:
Failed message 1: javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 465, response: -1] with root causejavax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 465, response: -1at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2197) ~[javax.mail-1.6.1.jar:1.6.1]at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:740) ~[javax.mail-1.6.1.jar:1.6.1]at javax.mail.Service.connect(Service.java:366) ~[javax.mail-1.6.1.jar:1.6.1]at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:515) ~[spring-context-support-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:435) ~[spring-context-support-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:321) ~[spring-context-support-5.0.8.RELEASE.jar:5.0.8.RELEASE]
项目配置
spring:mail:# 配置 SMTP 服务器地址host: smtp.163.com# 发送者邮箱username: cocoococ@163.com# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码password: ajhdasdkaklsjdl# 端口号465或587port: 465# 默认的邮件编码为UTF-8default-encoding: UTF-8# 配置SSL 加密工厂properties:mail:smtp:socketFactoryClass: javax.net.ssl.SSLSocketFactory#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误debug: true
发送代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;@RestController
@RequestMapping("test")
public class TestController {@AutowiredJavaMailSender javaMailSender;@GetMapping("sendMail")public void sendMail(){SimpleMailMessage message = new SimpleMailMessage();// 设置邮件主题message.setSubject("这是一封测试邮件");// 设置邮件发送者,这个跟application.yml中设置的要一致message.setFrom("cocoococ@163.com");// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似// message.setTo("10*****16@qq.com","12****32*qq.com");message.setTo("222qwioqin@qq.com");// 设置邮件发送日期message.setSentDate(new Date());// 设置邮件的正文message.setText("这是测试邮件的正文");javaMailSender.send(message);}}
问题调试
可疑点在于上面红线位置
- 我明明设置了账号、授权码登录,但是useAuth还是false
- isSsl 也是false
从报错堆栈中找到
com.sun.mail.smtp.SMTPTransport#protocolConnect
就是说 useAuth 其实是从属性中解析的,这里的name代表协议类型(smtp、pop3)
那么完整的属性名应该是 mail.smtp.auth
接着
com.sun.mail.smtp.SMTPTransport#openServer(java.lang.String, int)
这里的isSSL
是成员属性
根据调试只有在构造函数中才会赋值
com.sun.mail.smtp.SMTPTransport#SMTPTransport(javax.mail.Session, javax.mail.URLName, java.lang.String, boolean)
那么完整的属性名应该是 mail.smtp.ssl.enable
所以只要修改yml文件即可
解决方案
spring:mail:# 配置 SMTP 服务器地址host: smtp.163.com# 发送者邮箱username: cocoococ@163.com# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码password: ajhdasdkaklsjdl# 端口号465或587port: 465# 默认的邮件编码为UTF-8default-encoding: UTF-8# 配置SSL 加密工厂properties:mail:smtp:starttls:enable: trueauth: truessl:enable: truesocketFactoryClass: javax.net.ssl.SSLSocketFactory#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误debug: true
server:port: 8999servlet:path: /mall
spring boot mail发送邮件异常解决相关推荐
- spring boot mail 发送邮件,及25端口更换到465端口
因为考虑到邮箱注册的业务,最近写了一个发送邮件的业务.使用阿里云邮箱发送.在这里搭建什么的就不展示了,直接上关键代码. pom.xml中添加: <dependency><groupI ...
- Spring Boot 之发送邮件
目录 Spring Boot 之发送邮件 简介 API 配置 实战 完整示例 引申和引用 Spring Boot 之发送邮件 简介 API 配置 实战 引入依赖 配置邮件属性 Java 代码 完整示例 ...
- Spring Boot 2发送邮件手把手图文教程
本文基于:Spring Boot 2.1.3,理论支持Spring Boot 2.x所有版本. 最近有童鞋问到笔者如何用Spring Boot发送邮件,故而整理下Spring Boot发送邮件的各种姿 ...
- Spring Boot集成Druid异常discard long time none received connection.
Spring Boot集成Druid异常 在Spring Boot集成Druid项目中,发现错误日志中频繁的出现如下错误信息: discard long time none received conn ...
- Spring Boot 菜鸟教程 异常 集锦
异常1.集成SPRing Data JPA 异常信息摘要: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataS ...
- spring boot实现发送邮件以及群发邮件
spring boot实现发送邮件以及群发邮件 2021年上班第一天,老板就让我写一个功能,要求将项目中的设备在线情况,发送邮件到老板和甲方老板的邮箱里,然后我花了正好一天的时间,将功能写了出来,如下 ...
- Spring boot Whitelabel Error Page解决方法(弱鸡方法,非全部适用)
Spring boot Whitelabel Error Page解决方法(弱鸡方法,非全部适用) springboot版本:2.0.1 我是在设置自定义的错误页面时报了空白页错误,结果最后发现,我把 ...
- idea提示未配置 Spring Boot 配置注解处理器解决方法
未配置 Spring Boot 配置注解处理器 解决方法: 在pom.xml里添加依赖 <dependency><groupId>org.springframework.boo ...
- spring boot报FileSizeLimitExceededException异常的解决方法
开发spring boot程序时,遇到了如下错误: The field file exceeds its maximum permitted size of 1048576 bytes. 原因: Sp ...
- 稳定性专题 | Spring Boot 常见错误及解决方法
导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领域,以更结构化的 ...
最新文章
- C#+SQL数据库备份和还原
- 2009年依然兑现不了的10大IT安全预期
- python实战系列之写个好玩的猜拳游戏(附源代码)
- 一次群晖中勒索病毒后的应急响应
- 我是一只IT小小鸟读书笔记3
- 在代码中使用SqlCommand对象
- MyCat-Web安装
- java 抽象类 方法_java 抽象类
- python条件语句有哪些_Python 条件语句
- centos 5.6安装nginx+mysql+php(php-fpm)+phpmyadmin总结
- 爬取飞猪IP免费代理练习
- PHP实现的7组经纬度与距离的计算函数
- Python提取图片中的文字信息
- 定时多次自动打开关闭网页的bat脚本
- 解决File.Delete()删除不掉文件
- [论文阅读:姿态识别Transformer] POET: End-to-End Trainable Multi-Instance Pose Estimation with Transformers
- echarts实现省份地图
- FZU2214 超大背包
- 昨日黄花Hadoop 方兴未艾云原生——传统大数据平台的云原生化改造
- 为防止失联......
热门文章
- C语言向文件写入学生信息并读取显示出来
- MCS:随机数的生成
- 容器技术Docker K8s 8 容器服务ACK Pro版集群
- 把UIView提到所有View的最前面
- 正态分布下贝叶斯决策的特例(一)
- 117.填充同一层的兄弟节点II
- java listview用法_Android ListView使用 | 学步园
- python中如何导入图片_python如何导入图片
- 广义线性模型 逻辑回归与softmax的推导
- android studio | openGL es 3.0增强现实(AR)开发 (5) GLSurfaceView浅解