给企业邮箱发送邮件失败

简介: ## 一、背景在项目开发过程中,涉及到一个给企业邮箱发送邮件的功能,但在写完相关的邮件发送代码之后,出现问题,邮件发送失败。其中,邮件发送的相关代码如下:```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项目,即可发送邮件啦。

相关文章
|
5月前
|
Java
java阿里云企业邮箱发送邮件
java阿里云企业邮箱发送邮件
3603 0
|
数据安全/隐私保护
基于nodemailer使用阿里云企业邮箱发送邮件(526错误的解决)
在虽然日常生活中,QQ,微信等即时聊天工具几乎主导了人们的生活,但是邮件依然是现代生活不可缺少的一部分。这篇文章主要讲述使用node.js 中的nodemail模块操作阿里云的企业邮箱发送邮件 (526错误的解决办法请前往2.
5869 0
|
安全 测试技术 数据安全/隐私保护
阿里云邮免费企业邮箱使用smtp发送邮件失败(SMTP开启、配置问题)
阿里云邮免费企业邮箱使用smtp发送邮件失败(SMTP开启、配置问题) 企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法 Foxmail 7.0 POP3/IMAP 设置方法如下: 1.
43628 0
|
测试技术 数据安全/隐私保护 Spring
spring-boot 速成(10) -【个人邮箱/企业邮箱】发送邮件
发邮件是一个很常见的功能,代码本身并不复杂,有坑的地方主要在于各家邮件厂家的设置,下面以qq个人邮箱以及腾讯企业邮箱为例,讲解如何用spring-boot发送邮件: 一、添加依赖项 compile 'org.
4732 0
|
28天前
|
网络协议 搜索推荐
阿里云DNS常见问题之阿里云DNS企业邮箱收不到国外的邮件如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
6月前
|
域名解析 安全 数据安全/隐私保护
阿里云企业邮箱简介和如何开通
阿里云企业邮箱是一款专为企业提供的电子邮件服务,它不仅拥有可靠、稳定、高效的特点,而且还具有一系列智能化的功能。这些功能包括:智能过滤、智能归档、智能备份、智能安全等方面的服务,这些服务可以帮助企业更高效地管理电子邮件,减少不必要的工作量,提高工作效率。
365 0
阿里云企业邮箱简介和如何开通
|
8月前
|
API 数据安全/隐私保护 开发者
阿里云企业邮箱确实提供了一些API接口
阿里云企业邮箱确实提供了一些API接口
1408 1
|
9月前
|
域名解析 安全 云计算
阿里云企业邮箱如何开通使用
阿里云企业邮箱是一个专业的企业邮件解决方案,由阿里云推出。它提供了强大的功能和可靠的性能,帮助企业构建稳定和高效的企业邮件系统。作为云计算领域的巨头,阿里云的企业邮箱服务得到了广泛的认可和信任。
|
10月前
|
存储 弹性计算 监控
阿里云企业邮箱怎么样?企业邮箱详细介绍
阿里云企业邮箱怎么样?企业邮箱详细介绍
464 0
|
10月前
|
存储 弹性计算 监控
阿里企业邮箱_阿里云邮箱购买申请_钉钉企业邮箱
阿里企业邮箱_阿里云邮箱购买申请_钉钉企业邮箱
151 0