javamail发送qq邮箱失败案例分析

文章目录

  • javaMail报错:Unsupported or unrecognized SSL message
  • 原因分析: ssl与tls端口
  • 总结

javaMail报错:Unsupported or unrecognized SSL message

	c.n.m.service.impl.EmailServiceImpl      : 邮件发送异常, Mail server connection failed; nested exception is javax.mail.MessagingException: Exception reading response;nested exception is:javax.net.ssl.SSLException: Unsupported or unrecognized SSL message. Failed messages: javax.mail.MessagingException: Exception reading response;nested exception is:javax.net.ssl.SSLException: Unsupported or unrecognized SSL message

原因分析: ssl与tls端口

坑点:官方文档发送邮件服务器: smtp.qq.com,使用SSL,端口号465或587,其实是使用SSL用465,使用TLS使用587,不能混用,特别是JavaMail在设置Properties属性的时候需要指定使用哪一种协议,不能用混,否则报错
QQ邮箱SMTP/IMAP服务

在这里插入图片描述
比如说我配置的是邮箱服务器是 smtp.qq.com:587,但是JavaMail的Properties设置的是
javaMailProperties.put(“mail.smtp.starttls.enable”, “true”);则会报上述错,因为协议不匹配,必须使用465端口
在这里插入图片描述

总结

“mail.smtp.ssl.enable”和“mail.smtp.starttls.enable”是JavaMail邮件发送配置中的两个不同参数,它们的区别主要在于使用的加密协议

mail.smtp.ssl.enable:这个参数用于启用SSL(Secure Sockets Layer)加密协议。当设置为true时,邮件传输将通过一个SSL连接进行,这通常意味着使用465端口。SSL协议在建立连接后立即加密数据流,适用于那些要求全加密通信的SMTP服务器。

mail.smtp.starttls.enable:这个参数用于启用TLS(Transport Layer Security)加密协议。当设置为true时,邮件传输将通过一个开始时未加密的连接进行,然后在传输过程中升级为TLS加密,这通常意味着使用587端口。TLS协议是在数据传输之前建立一个加密层,适用于那些提供明文连接然后升级到加密通信的SMTP服务器。

总的来说,mail.smtp.ssl.enable和mail.smtp.starttls.enable都是用于邮件加密的配置项,但它们分别对应不同的加密方式和端口。如果SMTP服务器支持SSL,则应配置mail.smtp.ssl.enable;如果SMTP服务器支持TLS,则应配置mail.smtp.starttls.enable。

 private JavaMailSenderImpl generateMailSender(EmailSendDto emailSendDto) {JavaMailSenderImpl currentMailSender = new JavaMailSenderImpl();currentMailSender.setHost(emailSendDto.getHost());currentMailSender.setPort(Integer.parseInt(emailSendDto.getPort()));currentMailSender.setUsername(emailSendDto.getUsername());currentMailSender.setPassword(emailSendDto.getPassword());currentMailSender.setDefaultEncoding("UTF-8");Properties javaMailProperties = new Properties();javaMailProperties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");javaMailProperties.put("mail.smtp.auth", "true");javaMailProperties.put("mail.smtp.ssl.enable", "true");        // 465端口
//        javaMailProperties.put("mail.smtp.starttls.enable", "true"); // 587端口javaMailProperties.put("mail.debug", "true");currentMailSender.setJavaMailProperties(javaMailProperties);return currentMailSender;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring AI 来啦,快速上手

Spring AI Spring框架在软件开发领域,特别是在Java企业级应用中,一直扮演着举足轻重的角色。它以其强大的功能和灵活的架构,帮助开发者高效构建复杂的应用程序。而Spring Boot的推出,更是简化了新Spring应用的初始搭建和开发过程…

【分治算法】【Python实现】棋盘覆盖

文章目录 [toc]问题描述分治算法时间复杂性Python实现 个人主页:丷从心 系列专栏:分治算法 学习指南:Python学习指南 问题描述 在一个 2 k 2 k 2^{k} \times 2^{k} 2k2k个方格组成的棋盘中,若恰有一个方格与其他方格不同&…

httpClient提交报文中文乱码

httpClient提交中文乱码,ContentType类型application/json 指定提交参数的编码即可 StringEntity se new StringEntity(paramBody.toJSONString(),"UTF-8");se.setContentType("application/json");context.httpPost.setHeader("Cookie&…

JUC并发-共享模型-无锁-乐观锁(非阻塞)

1、问题提出 有如下需求,保证 account.withdraw 取款方法的线程安全 public class TestAccount {public static void main(String[] args) {Account account new AccountCas(10000);Account.demo(account);} }class AccountUnsafe implements Account {private I…

2024LarkXR新增功能系列之五 | 单端口支持多并发

实时云渲染技术在为虚拟现实、游戏、和各种应用程序提供强大的渲染支持的同时,也带来了一些网络和运维上的挑战。在传统的设置中,实时云渲染推流技术需要为每个视频流单独占用服务器的一个端口。这种方法在多用户同时访问的情况下可能会导致端口资源的快…

MemFire解决方案-物联网数据平台解决方案

方案背景 随着各种通讯、传感技术发展,数据通讯成本的急剧下降,数以万亿计的智能设备(智能手环、智能电表、智能手机、各种传感器设备等)接入网络,并源源不断的产生海量的实时数据。这些海量数据的价值挖掘&#xff0…

Node私库Verdaccio使用记录,包的构建,推送和拉取

Node私库Verdaccio使用记录,包的构建,推送和拉取 Verdaccio是一个轻量级的私有npm代理注册中心,它可以帮助你在本地搭建一个npm仓库,非常适合企业内部使用。通过使用Verdaccio,你可以控制和缓存依赖包,提高…

边OTG边充电芯片LDR6500

随着科技的飞速发展,智能移动设备已成为我们生活中不可或缺的一部分。而在这些设备的连接与数据传输中,Type-C接口以其高效、便捷的特性逐渐占据了主导地位。OTG(On-The-Go)技术则进一步扩展了Type-C接口的功能,使得设…

构建安全高效的数字货币钱包:开发指南

在加密货币领域的蓬勃发展中,数字货币钱包成为了连接用户与区块链的重要桥梁。作为存储、发送和接收加密资产的工具,数字货币钱包的安全性和效率至关重要。本文将介绍如何构建一个安全高效的数字货币钱包,并提供开发指南,帮助开发…

2024中国(江西)国际先进陶瓷材料及智能装备博览会

2024中国(江西)国际先进陶瓷材料及智能装备博览会 “中国(江西)国际先进陶瓷材料及智能装备博览会” 陶瓷三新展 (新材料、新装备、新技术) 绿色智能、引领未来 2024年11月1日-11月3日 中国江西 南昌…

深度学习系列64:数字人wav2lip详解

1. 整体流程 第一步,加载视频/图片和音频/tts。用melspectrogram将wav文件拆分成mel_chunks。 第二步,调用face_detect模型,给出人脸检测结果(可以改造成从文件中读取),包装成4个数组batch:img…

html显示PDF并兼容IE浏览器的解决方案

方案一、vue-pdf插件 缺点&#xff1a;IE11显示空白&#xff0c;编译后的Edge测试环境可以正常线上&#xff0c;打到线上报错&#xff0c;谷歌和百分浏览器显示完美 1、vue 只显示核心代码&#xff0c;需要安装vue-pdf插件 <vue-pdf :src"ivcPdfUrl"></v…

Spring声明式事务(@Transactional)原理之-ProxyTransactionManagementConfiguration

文章目录 目录 文章目录 前言 一、切入点以及切面的匹配规则 1.1 TransactionAttributeSourcePointcut事务的切入点匹配 二、TransactionInterceptor切面的具体逻辑 2.1 声明式事务实现的具体逻辑 总结 前言 上一篇文章已经说过了声明式事务的原理其实就是SpringAop动态…

C语言基础:初识指针(二)

当你不知道指针变量初始化什么时&#xff0c;可以初始化为空指针 int *pNULL; 我们看NULL的定义&#xff0c;可以看出NULL是0被强制转化为Void* 类型的0&#xff1b;实质还是个0&#xff1b; 如何避免野指针&#xff1a; 1. 指针初始化 2. 小心指针越界 3. 指针指向空间…

2024五一杯ABC题资料合集+代码+参考论文!!!

一.赛题思路 (赛题出来以后第一时间在群内分享) 二.比赛日期和时间 比赛开始时间:2024年5月1日(周三)10;00 比赛结束时间:2024年5月4日(周六&#xff09;12:00 三.将在明天分享的资料合集如下 4.我们这边会分享22年的题目完整全部的过程 5.数学建模的29个通用模型及MATLAB…

Python网络数据抓取(3):Beautiful Soup

Beautiful Soup 这个库通常被称为Beautiful Soup 4&#xff08;BS4&#xff09;。它主要用来从HTML或XML文件中抓取数据。此外&#xff0c;它也用于查询和修改HTML或XML文档中的数据。 现在&#xff0c;让我们来了解如何使用Beautiful Soup 4。我们将采用上一节中使用的HTML数据…

实验室温湿度设备巡检的意义

温湿度监控设备的正常运行对于实验室的科研工作来说至关重要&#xff0c;然而&#xff0c;我们常常会遇到设备出现故障或者探头不灵敏的情况&#xff0c;这给实验室的工作带来了诸多困扰&#xff0c;为了解决这些问题&#xff0c;对实验室温湿度设备进行巡检管理也是一种非常有…

前端vue如何生成二维码

有时候有需要链接直接生成二维码在手机上看的需求&#xff0c;比如下载&#xff0c;比如信息&#xff0c;比如excel 下面先引入包 import QRCode from qrcode; 然后上代码 // 将res转换成二维码const qrCodeData JSON.stringify(res); // 将res转换为字符串作为二维码数据// …

数据结构 -- 双向链表

谁说我没有死过? 出生以前, 太阳已无数次起落. 悠久的时光被悠久的虚无吞没, 又以我生日的名义卷土重来. --史铁生 目录 1. 前言2. 双向链表的结构3. 双向链表的实现4. 完整代码5. 总结 正文开始 1. 前言 双向链表是一种常见的数据结构&#xff0c;它与单向链表相比&#x…

MacPro(M1,M2芯片)Java开发和常用工具开源软件合集

目录 Java开发软件1 IDE1.1 idea1.2 Vs Code 2 开发工具2.1 数据库数据库模型管理数据库连接客户端 2.2 SSH/Telnet/Serial/Shell/Sftp客户端2.3 MarkDown编辑器2.3 代码片段管理粘贴 3小工具3.1 截图贴图3.2 Mac下修改hosts文件的图形化界面软件 Java开发软件 1 IDE 1.1 ide…