项目场景:

通过hutool写一段邮件发送代码,发现总是发送失败,并且报错:

问题描述:

当时我的代码是这样写的:

public static void main(String[] args) {MailSenderVo mailSenderVo = new MailSenderVo();mailSenderVo.setHost("smtp.exmail.qq.com");mailSenderVo.setPort(465);mailSenderVo.setAuth(true);mailSenderVo.setFrom("开启了smtp的代理邮箱");mailSenderVo.setUser("开启了smtp的代理邮箱");mailSenderVo.setPass("代理邮箱开启SMTP的时候获取的密码");mailSenderVo.setSslEnable(true);String subject = "邮件标题";String content = "邮件正文内容";try {log.info("邮件开始发送!");MailUtil.send(mailSenderVo, "要发送的目标邮箱地址", subject, content, false);log.info("邮件发送成功!");} catch (Exception e) {log.error(e.getMessage());}}

报的错打印出来是这样的:
MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 465


原因分析:

一开始怀疑是我的SSL配置没有改成true,百度了很多解决方案也都是说报这个错是因为这个ssl协议没有配置成true导致465访问不通,但是我的确配置的是true啊!!!!!!!真让人头大!
但是!突然定睛一看,我发现我把错误try catch住了,打印出来的错误未必是真正的错误,或许是这个错误的父类。


解决方案:

public static void main(String[] args) {MailSenderVo mailSenderVo = new MailSenderVo();mailSenderVo.setHost("smtp.exmail.qq.com");mailSenderVo.setPort(465);mailSenderVo.setAuth(true);mailSenderVo.setFrom("开启了smtp的代理邮箱");mailSenderVo.setUser("开启了smtp的代理邮箱");mailSenderVo.setPass("代理邮箱开启SMTP的时候获取的密码");mailSenderVo.setSslEnable(true);String subject = "邮件标题";String content = "邮件正文内容";
//        try {log.info("邮件开始发送!");MailUtil.send(mailSenderVo, "要发送的目标邮箱地址", subject, content, false);log.info("邮件发送成功!");
//        } catch (Exception e) {//            log.error(e.getMessage());
//        }}

我把try catch去掉后,用main方法直接运行这段代码,真正的报错出现了!

- 邮件开始发送!
Exception in thread "main" cn.hutool.extra.mail.MailException: MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 465at cn.hutool.extra.mail.Mail.send(Mail.java:359)at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:395)at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:191)at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:173)at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:158)at cn.net.cfss.fgbp.face.unifiedapi.service.collectionApplets.Collection10015Service.main(Collection10015Service.java:128)
Caused by: 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:1961)at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)at javax.mail.Service.connect(Service.java:317)at javax.mail.Service.connect(Service.java:176)at javax.mail.Service.connect(Service.java:125)at javax.mail.Transport.send0(Transport.java:194)at javax.mail.Transport.send(Transport.java:124)at cn.hutool.extra.mail.Mail.doSend(Mail.java:373)at cn.hutool.extra.mail.Mail.send(Mail.java:357)... 5 more
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:101)at sun.security.ssl.TransportContext.kickstart(TransportContext.java:238)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:354)at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:211)at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)... 13 moreProcess finished with exit code 1

原来是报错:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)导致最后报错:MessagingException: Could not connect to SMTP host: smtp.exmail.qq.com, port: 465,难怪我一直找不到原因!

然后百度一下这个错误,发现是我本地环境的jdk1.8的配置中禁止了这个SLLv3协议,所以本地发送邮件才会一直报错。

真正的解决方案是:
打开jdk的配置的文件:C:\Program Files\Java\jdk1.8.0_291\jre\lib\security\java.security,找到SSLv3,然后删掉,不让本地JDK禁止这个协议就能发送了。

但是!!!!!!!!!!!!!!!!!
万万没想到啊!
去掉了还是不行,这个时候我陷入了沉思…
然后我一百度发现,
诶,原来sslv3后面还有两个协议是和sslv3是类似的协议TLSv1, TLSv1.1,需要一起删除的!!!!!!!
然后我删除后重启了项目,本地发送邮件果然没问题了~
嗨呀!

本地代码无问题邮件却发送失败的问题相关推荐

  1. 阿里云 Java发布SpringBoot项目,使用邮件服务发送失败原因整理

    查了很多失败原因大致有一下几点: 使用了25端口,阿里云默认是禁用掉25端口的,看看能否通 解决办法:代码配置中指定为465端口 telnet smtp.163.com 25 2.使用465端口,依旧 ...

  2. 邮件群发平台_为什么初试邮件群发的企业总是发送失败?

    邮件群发是企业在经营过程中一种常用手段,不论是大量推送营销信息,还是定期发送节假日祝福,或者是客户注册信息及时响应,都需要用到邮件群发来辅助企业的经营,将企业最新的产品服务信息与客户共享,促进销售增长 ...

  3. 使用队列think-queue处理邮件的发送

    前言:使用的php框架版本为:thinkphp 5.0.24,队列使用的拓展包为:topthink/think-queue:2.0.3,redis版本为 5.0.5. 因为下面提到的队列使用的redi ...

  4. php邮件发送失败,php服务器发送邮件失败问题解析

    在thinkphp上用phpmailer发送邮件. 自己window上的wamp发送正常,邮箱是163的.但是发布到服务器上就一直提示发送失败. 1.如何调试邮件发送错误信息? 复制代码 代码示例: ...

  5. foxmail邮件加载失败重试_TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)...

    修改php.ini中的一些配置 extension=php_openssl.dll //前面的分号去掉,allow_url_fopen = Off 改为 allow_url_fopen = On PH ...

  6. 腾讯企业邮箱外域邮件发送失败原因及其解决方案

    腾讯企业邮箱外域邮件发送失败原因及其解决方案 参考文章: (1)腾讯企业邮箱外域邮件发送失败原因及其解决方案 (2)https://www.cnblogs.com/chen110xi/p/465067 ...

  7. exchange无法收发邮件_MAPI session超过Exchange最大限制,邮件发送失败的终极解决方法...

    前言:1.当今世界,Email已经成为一种通用的办公方式,并且是沟通地球村的一座重要桥梁.在使用Email,特别是Outlook收发邮件时,我们经常会碰到邮件发送失败的问题.在这种情况下,我们一般首先 ...

  8. pop3服务器协议初始化失败,邮件的发送和接收故障处理的几点方法

    成天和邮件打交道,难免遇到邮件的发送和接收问题.通常遇到的问题有:网络问题,对方服务器的问题,DNS解析的问题,对方拒绝接收你的邮件等.可以通过以下一些简单的方法,诊断问题的所在: 1)分析NOT D ...

  9. 邮件发送失败服务器繁忙,★邮件发送失败的原因和解决方法

    以下是对发 Hi. This is the PowerMail SMTP Server 1.0 at 72mail.cn . I'm afraid I wasn't able to deliver y ...

最新文章

  1. Hello Shell
  2. watchdog应用实例
  3. arm开发板放张图片动起来_ARM裸机不能正确显示图片的问题
  4. LaTex 各种特殊符号
  5. idea编译工程时出现Error:java: 无效的目标发行版: 1.8
  6. SAP UI5 mock服务器错误排查
  7. 柔性太阳能电池pdf_房车旅行如何做到电力无忧,那就选择一套合适的太阳能供电系统吧...
  8. 性能测试十九:jmeter参数优化+排错
  9. 给 c# 程序员的十个重要提示
  10. Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····
  11. gdb调试core文件
  12. 离散考试题计算机,离散数学试题及答案_离散数学试题库_离散数学试卷及答案...
  13. Scrapy学习笔记5——Spiders
  14. 2015 android 5.0 手机排行榜,2015上半年顶级新款Android手机汇总
  15. 新书封面初稿,征集意见ing【人人都是产品经理:9066】
  16. wp10手机不能连接微软服务器,Lumia920手机更新10166版WP10后,无法用Microsoft账户登录,也无法添加Microsoft账 - Microsoft Community...
  17. Linux 6.2:华为代码加速核心功能 715 倍!
  18. 大动作!中国研发“超级高铁” 理论时速达1000公里
  19. 滴滴出行与上海交通大学共建联合实验室,加速产学研合作进程
  20. [WiFi教程] 轻松教你支持ZTE中兴客户端

热门文章

  1. uiautomation 模块
  2. 神经网络压缩库Distiller学习
  3. K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转
  4. 蓝奏网盘带密码文件分享下载链接分析思路
  5. (20191231)免费下载论文的方法汇总
  6. 软件测试方法大全,49种测试方法,你知道几个?
  7. python 调用ocx
  8. 内部资料泄密,电信拨号软件系最大流氓软件
  9. 电脑可选更新到底是什么?(功能、质量和驱动程序更新)
  10. 图像处理问题解决师——求取每个颗粒到其他颗粒边缘的最近距离