邮件模板springboot(springboothtml邮件模板)
如何使用网易163邮箱发送邮件?Spring Boot ;Spring Boot综合邮件服务(HTML/附件/模板- *** 网易)
介绍
邮件服务是常用的服务之一,功能很多,可以给用户发送活动和营销广告。系统监控报告和警报可以在内部发送。本文将介绍Springboot如何集成邮件服务,并给出不同邮件服务提供商的集成配置。
如图所示:
开发过程
跳趾构造Springboot的构造非常简单。我们用https://start.spring.io/来建造它,这很方便。通过选择我们需要的模块,我们可以快速完成项目的构建:
引入依赖性
为了使用邮件服务,我们需要引入相关的依赖项,只需向Springboot添加以下依赖项:
依赖关系groupIdorg.springframework.boot/groupId工件ID spring-Boot-Starter-Mail/工件ID/依赖关系配置文件
您需要配置邮件服务提供商的相关参数,如服务地址、用户名和密码。下面这个例子是 *** 的配置,其中的密码不是 *** 密码,而是 *** 授权码,后面会讲到如何获取。
Springboot的配置文件application.yml如下:
server : port : 8080 spring : profiles : active : *** -spring : profiles : *** mail : host : *** tp.qq.com用户名: XXX @ q q.com密码: XXX properties : mail 3360 *** TP : auth 3: true starttls : enable 3360 true required 33:
在JavaMailSender被注射和信息被组合之后,最简单的文本邮件可以被发送。
@ autowired private javamail sender email sender;public void sendNormalText(String from,String to,String subject,String text){ SimpleMailMessage message=new SimpleMailMessage();message.setFrom(来自);message.setTo(到);message.setSubject(主题);message.setText(文本);emailSender.send(消息);}通话界面
服务调用实现后,通过控制器暴露REST接口,具体代码如下:
@ Value(\ ;$ { spring . mail . username } \ ;)私有字符串用户名;@ autowired private mail service mail service;@ get mapping(\ ;/normal text \ ;)public mono string send normaltext(){ mailservice . send normaltext(username,username,\ Springboot邮件(普通文本)\ \ 这是一封来自斯普林布特的邮件!\ )返回mono . just(\ ;已发送\ )}将实现的MailService注入到控制器中,调用相应的 *** 。这封邮件的发件人和收件人是同一个账号,实际实现可以灵活配置。
通过Postman调用接口,测试是否可以正常发送:
成功返回 sent又收到了一封电子邮件,并通过了测试。
多种类型邮件
简单文本邮件如何发送简单的文本邮件刚刚得到解释,所以我赢了 不要细说。
HTML邮件
虽然纯文本可以满足很多需求,但往往需要更丰富的样式来提高邮件的表现力。这时,HTML-type邮件就非常有用了。
服务代码如下:
public void sendHtml(String from,String to,String subject,String text)抛出messaging exception { mime message message=email sender . c
reateMimeMessage() MimeMessageHelper helper = new MimeMessageHelper(message, true) helper.setFrom(from) helper.setTo(to) helper.setSubject(subject) helper.setText(text, true) emailSender.send(message)}与简单的文本不同的是,本次用到了MimeMessage和MimeMessageHelper,这是非常有用的类,后续我们经常会用到,组合使用能大大丰富邮件表现形式。
Controller的代码如下:
@GetMapping(\"/html\")public MonoltStringgt sendHtml() throws MessagingException { mailService.sendHtml(username, username, \"Springboot Mail(HTML)\", \"lth1gtThis is a mail from Springboot!lt/h1gt\") return Mono.just(\"sent\")}
带附件邮件
邮件发送文件再正常不过,发送附件需要使用MimeMessageHelper.addAttachment(String attachmentFilename, InputStreamSource inputStreamSource) *** ,之一个参数为附件名,第二参数为文件流资源。Service代码如下:
public void sendAttachment(String from, String to, String subject, String text, String filePath) throws MessagingException { MimeMessage message = emailSender.createMimeMessage() MimeMessageHelper helper = new MimeMessageHelper(message, true) helper.setFrom(from) helper.setTo(to) helper.setSubject(subject) helper.setText(text, true) FileSystemResource file = new FileSystemResource(new File(filePath)) helper.addAttachment(filePath, file) emailSender.send(message)}
Controller代码如下:
@GetMapping(\"/attachment\")public MonoltStringgt sendAttachment() throws MessagingException { mailService.sendAttachment(username, username, \"Springboot Mail(Attachment)\", \"lth1gtPlease check the attachment!lt/h1gt\", \"/Pictures/postman.png\") return Mono.just(\"sent\")}
带静态资源邮件
我们访问的网页其实也是一个HTML,是可以带很多静态资源的,如图片、视频等。Service代码如下:
public void sendStaticResource(String from, String to, String subject, String text, String filePath, String contentId) throws MessagingException { MimeMessage message = emailSender.createMimeMessage() MimeMessageHelper helper = new MimeMessageHelper(message, true) helper.setFrom(from) helper.setTo(to) helper.setSubject(subject) helper.setText(text, true) FileSystemResource file = new FileSystemResource(new File(filePath)) helper.addInline(contentId, file) emailSender.send(message)}
其中,contentId为HTML里静态资源的ID,需要对应好。
Controller代码如下:
@GetMapping(\"/inlinePicture\")public MonoltStringgt sendStaticResource() throws MessagingException { mailService.sendStaticResource(username, username, \"Springboot Mail(Static Resource)\", \"lthtmlgtltbodygtWith inline pictureltimg src='cid:picture' /gtlt/bodygtlt/htmlgt\", \"/Pictures/postman.png\", \"picture\") return Mono.just(\"sent\")}
模板邮件
Java的模板引擎很多,著名的有Freemarker、Thymeleaf、Velocity等,这不是本点的重点,所以只以Freemarker为例使用。
Service代码如下:
@Autowiredprivate FreeMarkerConfigurer freeMarkerConfigurerpublic void sendTemplateFreemarker(String from, String to, String subject, MapltString, Objectgt model, String templateFile) throws Exception { MimeMessage message = emailSender.createMimeMessage() MimeMessageHelper helper = new MimeMessageHelper(message, true) helper.setFrom(from) helper.setTo(to) helper.setSubject(subject) Template template = freeMarkerConfigurer.getConfiguration().getTemplate(templateFile) String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model) helper.setText(html, true) emailSender.send(message)}
注意需要注入FreeMarkerConfigurer,然后使用FreeMarkerTemplateUtils解析模板,返回String,就可以作为内容发送了。
Controller代码如下:
@GetMapping(\"/template\")public MonoltStringgt sendTemplateFreemarker() throws Exception { MapltString, Objectgt model = new HashMapltgt() model.put(\"username\", username) model.put(\"templateType\", \"Freemarker\") mailService.sendTemplateFreemarker(username, username, \"Springboot Mail(Template)\", model, \"template.html\") return Mono.just(\"sent\")}
注意模板文件template.html要放在resources/templates/目录下面,这样才能找得到。
模板内容如下:
lt!DOCTYPE htmlgtlthtml lang=\"en\"gtltheadgt ltmeta charset=\"UTF-8\"gt lttitlegtTitlelt/titlegtlt/headgtltbodygtlth1gtHello ${username}lt/h1gtlth1gtThis is a mail from Springboot using ${templateType}lt/h1gtlt/bodygtlt/htmlgt
其中${username}和${templateType}为需要替换的变量名,Freemarker提供了很多丰富的变量表达式,这里不展开讲了。
集成不同邮件服务商
邮件服务的提供商很多,国内最常用的应该是 *** 邮箱和网易163邮箱了。
***
集成 *** 邮件需要有必备的账号,还要开通授权码。开通授权码后配置一下就可以使用了,官方的文档如下:
https://service.mail.qq.com/cgi-bin/help?subtype=1no=1001256id=28
需要注意的是,开通授权码是需要使用绑定的手机号发短信到特定号码的,如果没有绑定手机或者绑定手机不可用,那都会影响开通。
开通之后,授权码就要以作为密码配置到文件中。
163
网易的开通方式与 *** 没有太大差别,具体的指导可以看如下官方文档:
http://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2cda80145a1742516
同样也是需要绑定手机进行操作。
总结
本次例子发送后收到邮件如图所示:
邮件功能强大,Springboot也非常容易整合。技术利器,善用而不滥用。
springboothtml邮件模板 springboot邮件详解