# JavaMail **Repository Path**: jun-wan/java-mail ## Basic Information - **Project Name**: JavaMail - **Description**: 使用JavaMail发送邮件, 支持SSL,项目分本地环境和线上环境,本地环境的网易邮箱采用 25端口发送邮件(QQ邮箱依然是465端口),线上环境的邮箱采用465端口发送邮件。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://www.tannic.fun/mail/doc.html - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2024-04-27 - **Last Updated**: 2025-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: Swagger, Maven, lombok, java-mail, Redis ## README # JavaMail ### 介绍 使用JavaMail发送邮件, 支持SSL,项目分本地环境和线上环境,本地环境的网易邮箱采用 `25端口`发送邮件(`QQ邮箱`依然是`465端口`),线上环境的邮箱采用`465端口`发送邮件。 在阿里云规定中: > 因云虚拟主机的25端口默认封闭,需要使用SSL加密端口(通常是465端口)来对外进行发送邮件。 ### 软件架构 项目采用技术: - `Maven` - `SpringBoot` - `JavaMail` - `JDK1.8` - `Lombok` - `Swagger2-knife4j` - `Redis` ### 项目功能 - 支持QQ/网易邮箱发送邮件 - 支持多收件人 - 支持发送验证码【登录/密码找回】场景 ### 安装教程 1. 修改`application.yml`中的邮箱配置信息,注意邮箱的密码栏填写的不是 `邮箱密码`,而是`授权码`,获取方式如下(以网易邮箱为例): > 1. 登录网易邮箱,依次点击 设置>POP3/SMTP/IMAP>授权密码管理 > 2. 设置授权码,并点击确认 > 3. 复制授权码,并填入`application.yml`中的`from_password`栏中 > 4. 重启项目,即可发送邮件 2.修改`application.yml`中的邮箱类型为对应的类型: ```yaml #邮件信息 mail: #邮箱类型 QQ/WY【请根据类型,填写对应邮箱的账号信息】 填写如:type: QQ type: WY type: WY ``` 3.如果本地启动项目,修改`application.yml`中的环境配置为本地: ```yaml #本地配置dev,线上为prod profiles: active: dev ``` 4.配置好后启动项目,可以在控制台看到如下输出,浏览器打开即可访问Swagger控制台 > 接口文档地址:http://localhost:7777/doc.html ### 疑难问题 1. 将项目部署到线上以后,即使使用了`465端口`也会出现如下报错信息: > Could not connect to SMTP host: smtp.163.com, port: 465 经过调试,具体的报错信息为: ```text javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 翻译后为:SSL握手异常:没有合适的协议(协议被禁用或密码套件不合适) ``` 2. 解决方案: 如果服务器的jdk是使用`yum`命令进行安装的话,使用如下命令进行搜索`java.security`文件: ```shell find /usr/lib/jvm/ -name java.security ``` 搜索结果大概是这样的: ```shell [root@centos7 security]# find /usr/lib/jvm/ -name java.security /usr/lib/jvm/java-11-openjdk-11.0.22.0.7-1.el7_9.x86_64/conf/security/java.security [root@centos7 security]# ``` 3. 搜索到文件后,编辑该文件,命令: ```shell vim /usr/lib/jvm/java-11-openjdk-11.0.22.0.7-1.el7_9.x86_64/conf/security/java.security ``` 4. 找到如下内容(快捷定位行方式【使用英文的 冒号+行号】 如=> :740 回车即可定位): ```text 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 将第一行注释掉,复制一行,去掉【TLSv1, TLSv1.1,】即可,如下: jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves ``` 5. 保存退出,重启服务器即可。 ### 项目地址 gitee地址:[https://gitee.com/jun-wan/java-mail](https://gitee.com/jun-wan/java-mail) ### 技术交流 如有疑问或者技术交流,或者有优化和建议及添加新的功能需求,可发在issue提出,或者发送邮件至`TanNIc1314@163.com`,将进行优化。 如果此项目对你有帮助,请点个star,谢谢^_^!