Spring boot 发送文本邮件 和 html模板邮件

Spring boot 发送文本邮件 和 html模板邮件

提示:这里使用 spring-boot-starter-mail 发送文本邮件 和 html模板邮件


文章目录

  • Spring boot 发送文本邮件 和 html模板邮件
  • 一、开启QQ邮箱里的POP3/SMTP服务
    • ①:开启步骤
  • 二、简单配置
    • ①:引入依赖
    • ②:yml配置
  • 三、发送纯文本文件
    • ①:写个工具类
    • ②:在业务层调用方法发送即可
    • ③:发送成功
  • 四、发送Html模板邮件
    • ①:定义一个Html模板
    • ②:在工具类中新增两个方法
    • ③:发送成功


提示:以下是本篇文章正文内容,下面案例可供参考

一、开启QQ邮箱里的POP3/SMTP服务

①:开启步骤

1.邮箱设置 -->账号

在这里插入图片描述

2.开启服务(并复制 授权码

在这里插入图片描述在这里插入图片描述

二、简单配置

①:引入依赖

  <!--        邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

②:yml配置

  mail:username: xxxx@foxmail.com# QQ邮箱应该使用授权码password: *****ek***## 邮箱服务器地址 smtp.qq.comhost: smtp.qq.com#使用SMTPS协议465端口port: 465# ssl 配置properties:mail.smtp.starttls.required: trueencoding: UTF-8mail.smtp.ssl.enable: truemail.smtp.auth: truemail.smtp.socketFactory.port: 465mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactorymail.smtp.socketFactory.fallback: false

三、发送纯文本文件

①:写个工具类

@Component
@Slf4j
public class UtilsSendCode {@Value("${spring.mail.username}")private String sender;@Resourceprivate JavaMailSenderImpl mailSender;/*** 发送纯文字邮件* @param to 收件人* @param subject 主题* @param content 内容*/public void sendSimpleMail(String to, String subject, String content) {//创建SimpleMailMessage对象SimpleMailMessage message = new SimpleMailMessage();//邮件发送人message.setFrom(sender);//邮件接收人message.setTo(to);//邮件主题message.setSubject(subject);//邮件内容message.setText(content);//发送邮件try {mailSender.send(message);log.info("邮件接收人"+to+"主题"+subject+"内容"+content+"邮件发送成功");}catch (Exception e){log.error("邮件接收人"+to+"主题"+subject+"内容"+content+"邮件发送出现异常");log.error("异常信息为"+e.getMessage());}}
}

②:在业务层调用方法发送即可

  // 开始发送邮件utilsSendCode.sendSimpleMail("xxxxxx@gmail.com", "验证码", "123456");

在这里插入图片描述

③:发送成功

1.发送测试

在这里插入图片描述

2.收到验证码

在这里插入图片描述

四、发送Html模板邮件

①:定义一个Html模板

1.template/mailTemplate.ftl

在这里插入图片描述

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="description" content="email code"><meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<!--邮箱验证码模板-->
<body>
<div style="background-color:#ECECEC; padding: 35px;"><table cellpadding="0" align="center"style="width: 800px;height: 100%; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family:微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial;background:#fff;"><tbody><tr><th valign="middle"style="height: 25px; line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: RGB(148,0,211); background-color: RGB(148,0,211); border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;"><font face="微软雅黑" size="5" style="color: rgb(255, 255, 255); ">这里输入name</font></th></tr><tr><td style="word-break:break-all"><div style="padding:25px 35px 40px; background-color:#fff;opacity:0.8;"><h2 style="margin: 5px 0px; "><font color="#333333" style="line-height: 20px; "><font style="line-height: 22px; " size="4">尊敬的用户:</font></font></h2><!-- 中文 --><p>您好!感谢您使用****,您的账号正在进行邮箱验证,验证码为:<font color="#ff8c00">{0}</font>,有效期30分钟,请尽快填写验证码完成验证!</p><br><!-- 英文 --><h2 style="margin: 5px 0px; "><font color="#333333" style="line-height: 20px; "><font style="line-height: 22px; " size="4">Dear user:</font></font></h2><p>Hello! Thanks for using *****, your account is being authenticated by email, theverification code is:<font color="#ff8c00">{0}</font>, valid for 30 minutes. Please fill in the verification code as soon aspossible!</p><div style="width:100%;margin:0 auto;"><div style="padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;"><p>****团队</p><p>联系我们:********</p><br><p>此为系统邮件,请勿回复<br>Please do not reply to this system email</p><!--<p>©***</p>--></div></div></div></td></tr></tbody></table>
</div>
</body>
</html>

②:在工具类中新增两个方法

  • 根据模板生成邮件内容
    /*** 根据模板生成邮件内容* @param code 验证码* @return*/public String buildContent(String code) {//加载邮件html模板ClassPathResource resource = new ClassPathResource("template/mailTemplate.ftl");InputStream inputStream = null;BufferedReader fileReader = null;StringBuffer buffer = new StringBuffer();String line = "";try {inputStream = resource.getInputStream();fileReader = new BufferedReader(new InputStreamReader(inputStream));while ((line = fileReader.readLine()) != null) {buffer.append(line);}} catch (Exception e) {log.error("发送邮件读取模板失败{}", e.toString());} finally {if (fileReader != null) {try {fileReader.close();} catch (IOException e) {e.printStackTrace();}}if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}//替换html模板中的参数return MessageFormat.format(buffer.toString(), code);}
  • 发送HTML邮件
    /*** 发送HTML邮件* @param to 收件人* @param subject 主题* @param code 内容(验证码)*/public void sendEmailByHtml(String to, String subject, String code) {//获取MimeMessage对象MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper messageHelper;try {messageHelper = new MimeMessageHelper(message, true);//邮件发送人messageHelper.setFrom(sender);//邮件接收人messageHelper.setTo(to);//邮件主题message.setSubject(subject);//邮件内容,html格式messageHelper.setText(buildContent(code), true);//发送mailSender.send(message);//日志信息log.info("邮件已经发送。");} catch (MessagingException e) {log.error("发送邮件时发生异常!", e);}}

③:发送成功

1.业务层调用方法直接发送即可

 // 开始发送邮件utilsSendCode.sendEmailByHtml("xxxx9@gmail.com", "验证码", "559955");

2.测试请求

在这里插入图片描述

3.发送成功

在这里插入图片描述

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

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

相关文章

8.均值滤波

1 简介 均值滤波是一种低通滤波&#xff0c;它可以有效过滤图片中的椒盐噪声&#xff0c;但是副作用也同样明显&#xff0c;会使图片的边缘过于模糊。   均值滤波的卷积核系数均为1。   这里最终重复一下算法实现以及验证的步骤&#xff1a;     1.MATLAB读取图片并转化…

macOS Sonoma如何查看隐藏文件

在使用Git进行项目版本控制时&#xff0c;我们可能会遇到一些隐藏文件&#xff0c;比如.gitkeep文件。它通常出现在Git项目的子目录中&#xff0c;主要作用是确保空目录也可以被跟踪。 终端命令 在尝试查看.gitkeep文件时&#xff0c;使用Terminal命令来显示隐藏文件 default…

【Pt】马灯贴图绘制过程 03-制作油渍、积尘效果

目录 效果 一、制作油渍效果 1.1 基本油渍 1.2 流淌的油渍痕迹 二、制作浮尘效果 三、制作积尘效果 效果 一、制作油渍效果 1.1 基本油渍 将上篇制作的“锈迹_深色”和“锈迹_浅色”两个文件夹再次合并为一个文件夹 这里就命名为“锈迹” 添加一个填充图层 设置Base …

小程序利用WebService跟asp.net交互过程发现的问题并处理

最近在研究一个项目&#xff0c;用到asp.net跟小程序交互&#xff0c;简单的说就是小程序端利用wx.request发起请求。获取asp.net 响应回来的数据。但经常会报错。点击下图的测试按钮 出现如下错误&#xff1a; 百思不得其解&#xff0c;试了若干方法&#xff0c;都不行。 因为…

企业网站建设的方法的相关问题的解决办法的问题

现在市场上比较大的公司都建立了自己的企业网站&#xff0c;比如华为、小米等&#xff0c;在他们的企业网站中&#xff0c;可以充分展示自己产品的优势&#xff0c;介绍公司的优质服务。 这都是让顾客改变购买想法的重要因素。 现在互联网发达了&#xff0c;很多人在购买产品的…

智慧工地安全生产与风险预警大平台的构建,需要哪些技术?

随着科技的不断发展&#xff0c;智慧工地已成为现代建筑行业的重要发展趋势。智慧工地方案是一种基于先进信息技术的工程管理模式&#xff0c;旨在提高施工效率、降低施工成本、保障施工安全、提升施工质量。一般来说&#xff0c;智慧工地方案的构建&#xff0c;需要通过集成物…

计算机网络:物理层 - 信道极限容量

计算机网络&#xff1a;物理层 - 信道极限容量 实际信道中的数字信号奈式准则香农公式练习 实际信道中的数字信号 信号在传输过程中会受到各种因素的影响&#xff0c;如图所示&#xff1a; 这是一个数字信号&#xff0c;当它通过实际的信道后&#xff0c;波形会产生失真&#…

Linux学习:进程(3)与 环境变量

目录 1. 进程的优先级1.1 什么是进程的优先级1.2 优先级的具体表示与查看方式 2. 进程的切换与调度2.1 切换2.2 调度 3. 环境变量3.1 main参数/命令行参数3.2 什么是环境变量3.3 环境变量的使用与特性3.5 本地变量与环境变量的脚本配置文件 1. 进程的优先级 在计算机运行的过程…

【JavaScript】数组 ② ( JavaScript 数组索引 | JavaScript 遍历数组 | 使用 for 循环遍历数组 )

文章目录 一、JavaScript 数组索引1、数组索引2、数组索引 - 代码示例 二、JavaScript 遍历数组1、使用 for 循环遍历数组2、使用 for 循环遍历数组 - 代码示例 一、JavaScript 数组索引 1、数组索引 在 JavaScript 中 , 数组 的 " 索引 " 又称为 " 下标 "…

电脑突然死机怎么办?

死机是电脑常见的故障问题&#xff0c;尤其是对于老式电脑来说&#xff0c;一言不合电脑画面就静止了&#xff0c;最后只能强制关机重启。那么你一定想知道是什么原因造成的吧&#xff0c;一般散热不良最容易让电脑死机&#xff0c;还有系统故障&#xff0c;比如不小心误删了系…

React 应用实现监控可观测性最佳实践

前言 React 是一个用于构建用户界面的 JavaScript 框架。它采用了虚拟 DOM 和 JSX&#xff0c;提供了一种声明式的、组件化的编程模型&#xff0c;以便更高效地构建用户界面。无论是简单还是复杂的界面&#xff0c;React 都可以胜任。 YApi 是使用 React 编写的高效、易用、功…

2.人机交互-图形化界面的小故事

文章目录 一、图形化界面的小故事二、什么是cmd&#xff1f; 计算机在刚开始出现的时候&#xff0c;因为占地广、造价高、耗电多&#xff0c;一般都是给军队或者政府使用的&#xff0c;而并不是给个人使用的。然后随着计算机不断地发展&#xff0c;体积越来越小&#xff0c;出现…

【计算机网络篇】数据链路层(4.1)可靠传输的相关概念

文章目录 &#x1f354;可靠传输的相关概念⭐分组丢失⭐分组失序⭐分组重复 &#x1f95a;注意 &#x1f354;可靠传输的相关概念 使用差错检测技术&#xff08;例如循环冗余校验CRC&#xff09;&#xff0c;接收方的数据链路层就可以检测出帧在传输过程中是否产生了误码&…

B2902A是德科技B2902A精密型电源

181/2461/8938产品概述&#xff1a; Agilent B2902A 精密源/测量单元 (SMU) 是一款 2 通道、紧凑且经济高效的台式 SMU&#xff0c;能够源和测量电压和电流。它用途广泛&#xff0c;可以轻松、高精度地执行 I/V&#xff08;电流与电压&#xff09;测量。4 象限源和测量功能的集…

linux 内存介绍

大致共有四类&#xff1a;VSS、RSS、PSS、USS &#xff0c;通常情况下&#xff0c;VSS > RSS > PSS > USS 1.VSS(Virtual Set Size)虚拟耗用内存&#xff08;包含共享库占用的内存&#xff09; VSS表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已…

单例模式如何保证实例的唯一性

前言 什么是单例模式 指一个类只有一个实例&#xff0c;且该类能自行创建这个实例的一种创建型设计模式。使用目的&#xff1a;确保在整个系统中只能出现类的一个实例&#xff0c;即一个类只有一个对象。对于频繁使用的对象&#xff0c;“忽略”创建时的开销。特点&#xff1a…

Netty对Channel事件的处理以及空轮询Bug的解决

继续上一篇Netty文章&#xff0c;这篇文章主要分析Netty对Channel事件的处理以及空轮询Bug的解决 当Netty中采用循环处理事件和提交的任务时 由于此时我在客户端建立连接&#xff0c;此时服务端没有提交任何任务 此时select方法让Selector进入无休止的阻塞等待 此时selectCnt进…

骗子查询系统源码

源码简介 小权云黑管理系统 V1.0 功能如下&#xff1a; 1.添加骗子&#xff0c;查询骗子 2.可添加团队后台方便审核用 3.在线反馈留言系统 4.前台提交骗子&#xff0c;后台需要审核才能过 5.后台使用光年UI界面 6.新增导航列表&#xff0c;可给网站添加导航友链 7.可添加云黑类…

Flink系列之:Flink SQL Gateway

Flink系列之&#xff1a;Flink SQL Gateway 一、Flink SQL Gateway二、部署三、启动SQL Gateway四、运行 SQL 查询五、SQL 网关启动选项六、SQL网关配置七、支持的端点 一、Flink SQL Gateway SQL 网关是一项允许多个客户端从远程并发执行 SQL 的服务。它提供了一种简单的方法…

Flink集群主节点JobManager启动分析

1.概述 JobManager 是 Flink 集群的主节点&#xff0c;它包含三大重要的组件&#xff1a; ResourceManager Flink集群的资源管理器&#xff0c;负责slot的管理和申请工作。 Dispatcher 负责接收客户端提交的 JobGraph&#xff0c;随后启动一个Jobmanager&#xff0c;类似 Yarn…