mailmessage html编码,SpringBoot发送文字邮件和html类型邮件

引入邮件相关依赖

org.springframework.boot

spring-boot-starter-mail

2.0.3.RELEASE

在application.yml添加配置,其中username以及password是用来发送邮件的账号和密码

注:我这里使用的是腾讯企业邮箱实现的自定义域名邮箱,如果使用的是正常qq号申请的qq邮箱,需要在账号-设置中开启IMAP/SMTP服务,且需要使用qq邮箱里面提供的授权码作为password。(其他邮箱差不多,自行查看各个邮箱的帮助文档)spring:

mail:

default-encoding: utf-8

host: smtp.exmail.qq.com

username: admin@3kkg.com

password: password

port: 587

protocol: smtp

到这里我们已经可以在项目中进行邮件的发送了,那么如何发送呢?见代码:@Autowired

private JavaMailSender jms;

在需要发件的地方注入JavaMailSender对象进行邮件的发送。@Test

public void textMail() {

SimpleMailMessage message = new SimpleMailMessage();

message.setFrom(myMail);

message.setTo(toMail);

message.setSubject("textMail发送");

message.setText("内容123456");

jms.send(message);

}

其中setFrom设置发件人的账号,也就是我们项目中配置的账号。setTo设置发送到哪个邮箱,也就是收件人的账号。

Subject是邮件标题,Text是邮件内容。

我们经常见到另外一种邮件发送模式是像网页一样有排版的,这种邮件我们需要使用MimeMessage这个类来实现发送,见代码:@Test

public void htmlMail() {

MimeMessage mimeMessage = jms.createMimeMessage();

try {

MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);

messageHelper.setFrom(myMail);

messageHelper.setTo(toMail);

messageHelper.setSubject("htmlMail发送");

String html = "";

messageHelper.setText(html, true);

jms.send(mimeMessage);

} catch (MessagingException e) {

e.printStackTrace();

}

}

跟文字版发送没有太大区别,只是发送的对象变成了MimeMessage并且使用MimeMessageHelper来实现对MimeMessage的设置。

需要注意的是,在setText方法中,第二个参数需要为true。html这个变量的值就是整个网页的代码,且网页的样式最好不要使用引用的方式引入css,在某些邮件上会出现样式丢失。

对于html代码的获取,这里介绍一下使用enjoy模板引擎进行获取的办法:

引入enjoy的依赖

com.jfinal

enjoy

4.3

配置一个专门用来邮件发送的enjoy中的Engine,这里为了方便我直接在单元测试方法中进行创建,实际项目中可以参考这篇配置在EnjoyConfig类中。@Before

public void befor(){

ClassPathSourceFactory classPathSourceFactory = new ClassPathSourceFactory();

Engine.create("mail")

.setBaseTemplatePath("/templates/")

.setDatePattern("yyyy-MM-dd HH:mm:ss")

.setSourceFactory(classPathSourceFactory);

}

在resources目录下创建邮件的html模板。/resources/templates/notice.html

邮件通知模板

#(title)

#(content)

#(time)

使用如下代码进行html代码的获取并设置模板中需要设置的值Template template = Engine.use("mail").getTemplate("notice.html");

Map data = MapUtil.newHashMap();

data.put("title", title);

data.put("time", DateUtil.now());

data.put("content", content);

String html = template.renderToString(data);

到这html网页样式的邮件也可以实现发送了。

6bb34b9543f8adcb197e26715b4bd55d.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值