当前位置: 首页 > news >正文

解决java发邮件错误javax.net.ssl.SSLHandshakeException: No appropriate protocol

java发送邮件时报以下错误信息:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher

[com.bm6api.controller.v1.AppUserController] - sendLoginAuthCodeMail 发送登录验证码邮件 : {"code":200,"info":"Success"}
[org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor] - Written [{"code":200,"info":"Success"}] as "text/html" using [org.springframework.http.converter.StringHttpMessageConverter@3c3f40cb]
[org.springframework.web.servlet.DispatcherServlet] - Null ModelAndView returned to DispatcherServlet with name 'SpringMVC': assuming HandlerAdapter completed request handling
[org.springframework.web.servlet.DispatcherServlet] - Successfully completed request
[freemarker.cache] - TemplateLoader.findTemplateSource("email_login_auth_en_US.ftl"): Not found
[freemarker.cache] - TemplateLoader.findTemplateSource("email_login_auth_en.ftl"): Not found
[freemarker.cache] - TemplateLoader.findTemplateSource("email_login_auth.ftl"): Found
[freemarker.cache] - "email_login_auth.ftl"("en_US", UTF-8, parsed): using cached since 
javax.mail.MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 465;nested exception is:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1963)at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)at javax.mail.Service.connect(Service.java:345)at javax.mail.Service.connect(Service.java:226)at javax.mail.Service.connect(Service.java:246)at com.bm6api.service.impl.MailServiceImpl.sendEmail(MailServiceImpl.java:92)at com.bm6api.thread.EmailSendThread.run(EmailSendThread.java:34)
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:106)at sun.security.ssl.TransportContext.kickstart(TransportContext.java:238)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:410)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:389)at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:528)at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:333)at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:208)at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)... 6 more

解决办法1

修改JDK配置,将TLSv1和TLSv1.1从配置项里去除。配置文件路径在

$JAVA_HOME/jre/lib/security/java.security

定位到配置文件的

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA

所在行,注释掉原来那行,复制到下方,去掉TLSv1和TLSv1.1,保存。

# Note: This property is currently used by the JDK Reference implementation.
# It is not guaranteed to be examined and used by other implementations.
#
# Example:
#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048, \
#       rsa_pkcs1_sha1
#jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \include jdk.disabled.namedCurves

重新运行你自己的java服务进程即可。

相关文章:

  • 亚马逊上架儿童睡衣,婴儿沐浴座椅,不锈钢儿童水杯被召回的原因解析
  • 终于有人把VMware虚拟机三种网络模式讲清楚了!
  • 【力扣刷题篇】栈与队列相关OJ题及题解
  • 中睿天下Coremail | 2023年Q3企业邮箱安全态势观察报告
  • rocketmq-exporter配置为系统服务-自启动
  • SQL对数据进行去重
  • Java自学第8课:电商项目(3) - 重新搭建环境
  • Linux实战一天一个小指令--《日志查看》
  • 设备报修流程要怎么优化?工单管理系统如何提高设备维修效率?
  • 云原生服务高可用性保持的简单思考
  • Linux 网络管理
  • 探秘美国服务器价格因素:成本、竞争力还是资源优势?
  • docker通过nginx代理tomcat-域名重定向
  • 使用JS 判断数组对象 里面的每一个字段,字段为空,就返回true, 所有字段不为空,返回 false
  • 【广州华锐互动】地震防灾减灾科普3D虚拟展厅:向公众普及地震安全知识
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 03Go 类型总结
  • 5、React组件事件详解
  • Angular4 模板式表单用法以及验证
  • CODING 缺陷管理功能正式开始公测
  • Java多态
  • Redis字符串类型内部编码剖析
  • VuePress 静态网站生成
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分布式事物理论与实践
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 区块链共识机制优缺点对比都是什么
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 移动端高清、多屏适配方案
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (Java数据结构)ArrayList
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)VC++中ondraw在什么时候调用的
  • ../depcomp: line 571: exec: g++: not found
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net IE10 _doPostBack 未定义
  • .net Signalr 使用笔记
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 依赖注入和配置系统
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • ::before和::after 常见的用法
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解