使用背景

一般基本配置邮箱,默认使用的端口为25端口,使用这个端口不需要我们去配置ssl或tls协议一般都能成功发送邮件。使用中会有一些服务器屏蔽禁用25端口,如阿里服务器。此时就需要切换端口为465或587端口,并配置ssl协议。

SSL与TLS区别

SSL和TLS 都提供了bai一种加密两台计算机(例如您的计算机和我们的服务器)之间的通信通道的方法。TLS是SSL的后继产品,除非您指的是协议的特定版本,否则SSL和TLS可以互换使用。一般情况下使用ssl配置就可以了。

使用记录

引入依赖

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

配置properties

下面展示一些 内联代码片

spring.mail.default-encoding=UTF-8
spring.mail.host=mail.money.com
spring.mail.password=2020lonely
spring.mail.port=587
spring.mail.username=cheny@slef.com
spring.mail.test-connection=false
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=truespring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.imap.ssl.socketFactory.fallback=false
//此处值取自自己代码包路径
spring.mail.properties.mail.smtp.ssl.socketFactory.class=com.aebiz.util.MailSocketFactory

SSL配置代码

  1. MailSSLSocketFactory
package com.aebiz.util;import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;/*** @program: b2b-deli-purchase* @description: 邮箱ssl配置* @author: Mr.cy* @create: 2020-11-13 19:40**/public class MailSocketFactory extends SSLSocketFactory {private SSLSocketFactory factory;public MailSocketFactory() {try {SSLContext sslcontext = SSLContext.getInstance("TLS");sslcontext.init(null, new TrustManager[] { new MailTrustManager() }, null);factory = sslcontext.getSocketFactory();} catch (Exception ex) {// ignore}}public static SocketFactory getDefault() {return new MailSocketFactory();}@Overridepublic Socket createSocket() throws IOException {return factory.createSocket();}@Overridepublic Socket createSocket(Socket socket, String s, int i, boolean flag) throws IOException {return factory.createSocket(socket, s, i, flag);}@Overridepublic Socket createSocket(InetAddress inaddr, int i, InetAddress inaddr1, int j) throws IOException {return factory.createSocket(inaddr, i, inaddr1, j);}@Overridepublic Socket createSocket(InetAddress inaddr, int i) throws IOException {return factory.createSocket(inaddr, i);}@Overridepublic Socket createSocket(String s, int i, InetAddress inaddr, int j) throws IOException {return factory.createSocket(s, i, inaddr, j);}@Overridepublic Socket createSocket(String s, int i) throws IOException {return factory.createSocket(s, i);}@Overridepublic String[] getDefaultCipherSuites() {return factory.getDefaultCipherSuites();}@Overridepublic String[] getSupportedCipherSuites() {return factory.getSupportedCipherSuites();}
}
  1. MailTrustManager
package com.aebiz.util;import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;/*** @program: b2b-deli-purchase* @description: email配置* @author: Mr.cy* @create: 2020-11-13 19:42**/public class MailTrustManager implements X509TrustManager  {@Overridepublic void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}
}

邮件发送

1.EmailServiceImpl

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;@Service
public class EmailServiceImpl implements EmailService {@Autowiredprivate JavaMailSender javaMailSender;public void sendSimpleMail(String from,String to,String subject,String content){SimpleMailMessage simpleMailMessage = new SimpleMailMessage();simpleMailMessage.setFrom(from);simpleMailMessage.setTo(to);simpleMailMessage.setSubject(subject);simpleMailMessage.setText(content);javaMailSender.send(simpleMailMessage);}
}

至此就可以使用test类测试一下邮件是否可以发送成功

若在服务器上能够telnet通465、587端口,而发送邮件仍然报错端口错误,请检查自己的配置是否有问题。

springboot集成邮箱配置ssl或tls协议相关推荐

  1. SpringBoot集成邮箱功能并使用Knife4j测试

    SpringBoot集成邮箱功能并使用Knife4j测试 哔哩哔哩链接:https://www.bilibili.com/video/BV1uA411N7cm 1.获取163或QQ邮箱授权码 163邮 ...

  2. 一文搞定:SpringBoot 集成 Apollo 配置中心

    公众号后台回复"面试",获取精品学习资料 扫描下方海报了解专栏详情 本文来源: http://www.mydlq.club/article/42/ <Java工程师面试突击( ...

  3. SpringBoot 集成 Apollo 配置中心

    目录[-] 目录 一.Kubernetes 部署配置中心 Apollo 二.SpringBoot 集成 Apollo 配置中心 系统环境 SpringBoot 版本:2.1.8.RELEASE Apo ...

  4. Nginx 配置 SSL 及 HTTPS 协议通信过程

    一.前言 基础知识 1.1 公钥密码体制(public-key cryptography) 公钥密码体制分为三个部分,公钥.私钥.加密解密算法,它的加密解密过程如下: 加密:通过加密算法和公钥对内容( ...

  5. 记录spring、springboot集成apollo配置中心

    一, spring集成apollo,前提是apollo配置中心服务端已经在运行中 上面是我在阿里云服务搭建的apollo配置中心服务端,登录后的样子.没有搭建服务端的小伙伴,请先搭建好apollo的服 ...

  6. Java项目集成apollo,SpringBoot集成Apollo配置中心

    准备工作 本文假设读者已经在本地部署Apollo配置中心,如还未部署可参考之前的文章 <Docker部署Apollo配置中心> 文章将引导在Docker中运行Apollo配置中心.在开始使 ...

  7. SSL,TLS协议与OpenSSL 心血heartbleed漏洞之伤

    一声惊雷,今天爆出了一个关于SSL协议的惊天大漏洞,在用完各种poc工具后,我们不妨来深入了解下这个高危漏洞的机理. 不管你是用网上公布的检测网站还是各个QQ群疯传的poc 脚本,知其然还要知其所以然 ...

  8. SSL、TLS协议格式入门学习

    转载:http://www.tuicool.com/articles/rQjEzy3 原文  http://www.cnblogs.com/LittleHann/p/3733469.html 主题 S ...

  9. SpringBoot框架部署配置SSL证书

    1.拿到证书,解压得到证书文件以及password.txt 2.使用jdk自带的keytool将文件转换为JKS格式 3.cmd进入java的jdk的bin目录 输入:keytool -importk ...

最新文章

  1. 阿里飞猪搜索技术的应用与创新
  2. windows10 中 python3 离线 安装包,没有 网络 的 情况下 安装 whl包
  3. 只有想不到,「99」种扩展Jupyter功能的好方法
  4. 计算机在人力资源管理中的应用浅谈,计算机技术在人力资源管理工作中的应用.doc...
  5. linux系列之:告诉他,他根本不懂kill
  6. 这本Python书被封年度神作!程序员:比女友强太多!
  7. 大数据工程师技能图谱
  8. 【洛谷 P3384】树链剖分【详解树链剖分】
  9. 华创e路航固件_华创e路航地图官方版
  10. 电池单位中的毫安时与能量单位千焦及大卡的换算关系
  11. kiv8测量方法_云市场-404
  12. 【C语言】打印杨辉三角形
  13. VMware vCenter Server 7.0安装配置
  14. 时间序列分析实验报告总结_时间序列分析试验报告
  15. JAVA spring定时任务
  16. 统计redis中key的数量
  17. 基于javaweb的养老院管理系统(java+ssm+bootstrap+jsp+mysql)
  18. 如何设置文件 为 受保护的操作系统文件
  19. mysql数据文件瘦身_为MySQL数据文件ibdata1瘦身
  20. 【FPGA-Spirit_V2】基于FPGA的循迹小车-小精灵V2开发板

热门文章

  1. response是什么意思中文_response是什么意思
  2. 解决eclipse老是Refreshing external folders
  3. Jdbc系列八:批量处理
  4. Tensorflow2.0 自定义网络
  5. 单人登录-踢下线功能实现
  6. Vue css样式穿透和权重
  7. Google Maps Download Tool 谷歌地图下载工具
  8. 我的计算机生涯--开始
  9. 新华三面试总结(二)
  10. 从表征到行动---意向性的自然主义进路(续八)