给企业邮箱发送邮件失败

简介: ## 一、背景在项目开发过程中,涉及到一个给企业邮箱发送邮件的功能,但在写完相关的邮件发送代码之后,出现问题,邮件发送失败。其中,邮件发送的相关代码如下:```javaJavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();javaMailSender.setHost("smtp.aliyun.com");javaMail

一、背景

在项目开发过程中,涉及到一个给企业邮箱发送邮件的功能,但在写完相关的邮件发送代码之后,出现问题,邮件发送失败。其中,邮件发送的相关代码如下:

JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("smtp.aliyun.com");
javaMailSender.setPort(465);
javaMailSender.setUsername("xxxx@xxx"); //这里是邮箱的用户名
javaMailSender.setPassword("password"); //这里是邮箱的密码

//相关的属性配置如下:
Properties properties = new Properties();
properties.put("mail.smtp.auth", true);
properties.put("mail.smtp.timeout", 30000);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.starttls.required", "true");
properties.put("mail.smtp.starttls.enable", "true");
javaMailSender.setJavaMailProperties(properties);

SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("xxxx@xxx"); //发件人邮箱,与之前的邮箱用户名相同
message.setTo("xxxx@xxx"); //收件人邮箱
message.setSubject("主题:简单邮件");
message.setText("测试邮件内容");

javaMailSender.send(message); //发送邮件

二、问题

测试邮件过程中遇到的问题如下:

org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.aliyun.com, port: 465;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate). Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.aliyun.com, port: 465;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate);

三、过程

由于该问题是在向阿里云企业邮箱发送邮件时出现的,因此第一时间去想是否是阿里云企业邮箱的问题,也试过将发送端口改为80、25这种方式,均未解决现有问题。
后来意识到真正导致发送邮件失败的原因是以下这段错误:

javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate);

即在SSL握手过程中没有合适的协议,初步定位到SSL协议的问题。
之后的测试主要围绕SSL协议进行开展,也尝试过在spring的配置文件中配置(实际上在发送邮件的属性配置过程中已经进行过这项配置了,所以此问题与该配置无关)

spring.mail.smtp.ssl.enable = true

以上方式都没有效果。

四、原因与解决

之后,我通过[stackoverflow]()上的这篇回答解决了问题,成功地进行了邮件发送。

1.原因

这个问题是由于JDK版本过高引起的,具体来说,我的JDK版本为jdk_1.8.0_291。而在jdk_1.8.0_181之后,JDK对SSL做了限制,禁用了部分协议,导致在一些需要加密协议的地方出现问题,我们只要重新启用即可。

2.解决

具体的做法为找到JDK中的java.security文件(我的文件路径为:/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/jre/lib/security/),找到如下内容:

# Example:
#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

删掉其中的SSlv3,TLSv1和TSLv1.1,删完后如下:

# Example:
#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
jdk.tls.disabledAlgorithms=RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

然后重新启动JAVA项目,即可发送邮件啦。

相关文章
|
Java
java阿里云企业邮箱发送邮件
java阿里云企业邮箱发送邮件
3772 0
|
数据安全/隐私保护
基于nodemailer使用阿里云企业邮箱发送邮件(526错误的解决)
在虽然日常生活中,QQ,微信等即时聊天工具几乎主导了人们的生活,但是邮件依然是现代生活不可缺少的一部分。这篇文章主要讲述使用node.js 中的nodemail模块操作阿里云的企业邮箱发送邮件 (526错误的解决办法请前往2.
6072 0
|
安全 测试技术 数据安全/隐私保护
阿里云邮免费企业邮箱使用smtp发送邮件失败(SMTP开启、配置问题)
阿里云邮免费企业邮箱使用smtp发送邮件失败(SMTP开启、配置问题) 企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法 Foxmail 7.0 POP3/IMAP 设置方法如下: 1.
43752 0
|
测试技术 数据安全/隐私保护 Spring
spring-boot 速成(10) -【个人邮箱/企业邮箱】发送邮件
发邮件是一个很常见的功能,代码本身并不复杂,有坑的地方主要在于各家邮件厂家的设置,下面以qq个人邮箱以及腾讯企业邮箱为例,讲解如何用spring-boot发送邮件: 一、添加依赖项 compile 'org.
4782 0
|
7天前
|
安全 数据安全/隐私保护
阿里云企业邮箱怎么开始双重认证具体步骤
要开启阿里云企业邮箱的双重认证,需登录管理员账号,导航至安全管理设置,进入密码策略,点击“开启阿里邮箱双重认证”。开启后,用户需通过手机验证码或安全问题进行二次验证。注意:此功能仅支持网页邮箱和官方客户端,且影响所有用户。
31 5
|
21天前
申请阿里云的免费企业邮箱
要申请阿里云的免费企业邮箱,您可以按照以下步骤操作: 访问阿里云企业邮箱免费版申请页面。
174 4
|
28天前
|
存储 安全 数据库
阿里云最新域名注册和续费、企业邮箱、云虚拟主机收费标准与价格参考
域名注册和续费以及企业邮箱和云虚拟主机是很多用户上云第一步需要购买的产品,从2024年9月1日开始,全球域名又迎来了一波价格上调,目前阿里云的.com英文域名的注册价格由原来的78元涨价到了83元,续费价格也涨到了90元,不过企业新用户注册有1元购等活动。企业邮箱目前活动价540.00元/1年起,云虚拟主机独享基础增强版月付49元/1个月起,年付588元/1年起。本文为大家整理汇总了截止目前,阿里云域名注册和续费及转入收费标准、企业邮箱收费标准与活动价格、云虚拟主机最新收费标准,以供参考。
|
6月前
|
C#
2024年阿里云域名注册和续费、云虚拟主机、企业邮箱收费标准价格表
域名,云虚拟主机,企业邮箱是阿里云旗下的基础产品,阿里云的域名注册量一直稳居国内第一,旗下的云虚拟主机产品也是普通站长经常购买的产品,而阿里云的企业邮箱产品也收到越来越多的个人和企业用户喜欢,本文给大家分享一下2024年阿里云最新的域名,云虚拟主机,企业邮箱收费价格表,以供参考。
2024年阿里云域名注册和续费、云虚拟主机、企业邮箱收费标准价格表
|
6月前
|
域名解析 缓存 网络协议
阿里云DNS常见问题之DNS企业邮箱 不可以收发邮件如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
6月前
|
网络协议 搜索推荐
阿里云DNS常见问题之阿里云DNS企业邮箱收不到国外的邮件如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
下一篇
无影云桌面