实现发送模板邮件|学习笔记

简介: 快速学习实现发送模板邮件

开发者学堂课程【SpringBoot 实战教程 实现发送模板邮件】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10807


实现发送模板邮件


1、什么是模版

比如 html 模版每次使用相同的模版但是里面的数据都是变化的这就是基于模版的文件使用 FreeMarker 模版引擎首先需要对 FreeMarker 的架包进行依赖

<!-- 邮件依赖-->

<dependency>

<groupId>org . springframework .boot</groupId>

<artifactId>spring-boot-starter-mail</artifactId>

</ dependency>

<dependency>

<groupId>org . springf ramework . boot</groupId>

<artifactId>spring-boot-starter-freemarker/<artifactId>

</dependency>

发邮件时用以下模版

< !DOCTYPE html>

<html>

<head>

<meta charset= "UTF-8">

<title>Insert title here</title>

< /head>

<body>

$ {username }指定模版中的数据

</body>

< /html>

2、在 service 中增加一个功能发送模版邮件基于模版的邮件也需要指定发给谁邮件的标题邮件的内容就是模版只是模版被具体的数据替代掉content 相当于用的模版

//发送模板邮件

@Autowired

private FreeMarkerConfiqurer freeMarkerConfig;注入对象用的是这个模版引擎通过 FreeMarkerConfiqurer 得到相应的模版

@Override

Public void sendTemplateMail(StringsendTo,Stringtitle,Stringfile){

MimeMessagemessage=mailSender.createMimeMessage();封装和基于附件的邮件一样

try{

MimeMessageHelperhelper=newMimeMessageHelper(message,true);

helper.setFrom(emailConfig.getEmailFrom());邮件相关的信息通过 helper 复制谁发邮件

helper.setTo(sendTo);发给谁

helper.setSubject(title);标题

//封装模版使用的数据

Map<String,Object>model=new HashMap();封装到map

model.put("username","小"); 用户名模版中需要的数据数据是可以变化的

//得到模版模版就是文件模版的参数名叫 info模版是 template 类型的得到它相当于得到模版对象

Template template=freeMarkerConfig . getConfiguration() .getTemplate (info) ;

有模版有模版的数据如何实现数据用到模版中借助 FreeMarker 里面的工具类把模版和模版的数据传给工具类即可最终把数据运用到模版中转换成字符串字符串作为邮件发送的内容FreeMarkerTemplateUtils.processTemplateIntoString(template,model);

helper.setText(html,true);

}catch(Exceptione){

e.printStackTrace();

}

mailSender.send(message);

}

基于模版的邮件就是这样处理借助于相应模版引擎提供的生成把数据用到模版中最终生成邮件要发送的内容

3、在 controller 中添加功能第三个参数要告诉模版因为模版引擎默认在template 下找相应的模版直接指定模版文件的名字即可最后返回字符串

@RequestMapping ("/template")

@ResponseBody

public String sendTemplateEmail ()

{

emailService . sendTemplateMail. sendTemplateMail ("465008297@qq. com", " 呵呵"‘’info.html‘’) ;

Return ‘’success’’;

}

4、启动controller 访问路径是 template,成功看到字符串

image.png

5、查看邮箱标题是呵呵内容是小红模版中用到了数据模版里面就显示一个 username在模版中使用设置的数据把它作为邮件的内容这就是如何发送基于模版的邮件

image.png

相关文章
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
830 1
|
NoSQL MongoDB 存储
MongoDB 一致性模型设计与实现
本文源自阅读了 MongoDB 于 VLDB 19 上发表的 [Tunable Consistency in MongoDB](http://www.vldb.org/pvldb/vol12/p2071-schultz.pdf) 论文之后,在内部所做的分享(分享 PPT 见文末)。现在把分享的内容整理成此文,并且补充了部分在之前的分享中略过的细节,以及在分享中没有提及的 MongoDB Causa
2096 0
MongoDB 一致性模型设计与实现
|
10月前
|
自然语言处理 监控 安全
2025年阿里云短信验证码价格多少钱?计费模式与场景选型指南
随着企业数字化转型,短信验证码作为用户身份验证的重要工具,其成本与效率的平衡至关重要。阿里云短信服务以高可靠性、灵活计费和多场景适配著称。按量付费模式适合需求波动大的场景,而短信套餐包则为长期稳定需求提供了成本优势。针对不同业务场景,如高频验证、跨境业务及中小型企业轻量级需求,阿里云提供了定制化的选型策略。此外,通过阶梯定价、防盗刷监控等措施实现成本优化与风险规避,并不断进行技术升级以确保服务的安全性和稳定性。根据2025年最新数据,企业可根据自身需求选择最适合的阿里云短信验证码服务方案。
|
存储 数据采集 监控
CDGA\如何建立实现数据治理的效率价值框架:实践案例解析
数据治理是一个持续优化的过程。组织应建立健全的监督与评估机制,定期对数据治理工作进行评估,发现问题及时整改。广东药科大学通过数据全景图和数据监控大屏,实现了对数据治理成果的动态、多维度呈现与监控,为科学管理决策提供了有力支撑。
|
存储 JSON 前端开发
一文搞懂 Go 1.21 的日志标准库 - slog
一文搞懂 Go 1.21 的日志标准库 - slog
658 2
|
存储 关系型数据库 MySQL
深入探索MySQL的虚拟列:发展、原理与应用
深入探索MySQL的虚拟列:发展、原理与应用
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
349 1
|
自然语言处理 架构师 搜索推荐
一文详解瓴羊×阿里云上的Salesforce联合解决方案
一文详解瓴羊×阿里云上的Salesforce联合解决方案
1051 1
|
存储 算法 编译器
【ffmpeg 到Qt的图片格式转换】精彩的像素:深入解析 AVFrame 到 QImage 的转换
【ffmpeg 到Qt的图片格式转换】精彩的像素:深入解析 AVFrame 到 QImage 的转换
601 0
|
Go
新手向:Go语言发送邮件简易教程
新手向:Go语言发送邮件简易教程
737 0