开发者学堂课程【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 . sendTemplateMai
l
. sendTemplateMail ("465008297@qq. com", "
呵呵
"
,
‘’
info
.
html‘’
) ;
Return
‘’
success
’’;
}
4、启动,controller 访问路径是 template,成功看到字符串。
5、查看邮箱,标题是呵呵,内容是小红,模版中用到了数据,模版里面就显示一个 username,在模版中使用设置的数据,把它作为邮件的内容。这就是如何发送基于模版的邮件。