1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > SpringBoot整合邮件任务(QQ邮箱发送)

SpringBoot整合邮件任务(QQ邮箱发送)

时间:2018-12-06 01:48:09

相关推荐

SpringBoot整合邮件任务(QQ邮箱发送)

SpringBoot整合邮件任务(QQ邮箱发送)

1.获取QQ邮箱授权码

2.导入邮箱发送依赖启动器

使用定制邮件模板的方法实现通用邮件发送,Thymeleaf构建邮件模板需要一起导入依赖。

<!-- Mail --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!-- thymeleaf模板依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

3.配置文件yml添加邮件服务配置

# Spring配置spring:mail:host: username: ********@# password是第一步QQ邮箱开通的smtp服务后得到的客户端授权码password: ******************default-encoding: UTF-8properties:mail:smtp:auth: truestarttls:enable: truerequired: true#thymeleaf模板引擎配置太简单,就不贴出来了

4.编写接口IMailService

public interface IMailService {void sendHtmlMailThymeLeaf(String mailFrom, String mailFromNick, String mailTo, String cc, String subject, String content);}

5.编写实现MailServiceImpl

@Servicepublic class MailServiceImpl implements IMailService {/*** JavaMailSender是Spring Boot在MailSenderPropertiesConfiguration 类中配直好的,该类在 Mail* 自动配置类 MailSenderAutoConfiguration 中导入 因此这里注入 JavaMailSender 就可以使用了*/@Autowiredprivate JavaMailSender mailSender;@Overridepublic void sendHtmlMailThymeLeaf(String mailFrom, String mailFromNick, String mailTo, String cc, String subject, String content) {MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);mimeMessageHelper.setFrom(new InternetAddress(mailFromNick + " <" + mailFrom + ">"));// 设置多个收件人String[] toAddress = mailTo.split(",");mimeMessageHelper.setTo(toAddress);if (!StringUtils.isEmpty(cc)) {mimeMessageHelper.setCc(cc);}mimeMessageHelper.setSubject(subject);// 第二个参数为true表示邮件正文是html格式的,默认是falsemimeMessageHelper.setText(content, true);mailSender.send(mimeMessage);} catch (MessagingException e) {System.out.println(e);}}}

6.Controller调用

// 发件人要跟yml配置文件里填写的邮箱一致//可以使用注解 @Value("${spring.mail.username}")String mailFrom = "******@";// 收件人String mailTo = "******@,******@";// 抄送(可为空)//可以使用注解 @Value("${spring.mail.username}")String cc = "******@";// 注入mailService@Autowiredprivate IMailService mailService;// 注入TemplateEngine@AutowiredTemplateEngine templateEngine;@RequestMapping("/other/test")//请求路径@ResponseBodypublic void testMail() {//注意1:这里我是查询对应的内容,使用富文本编辑器存储html标签的内容Strategy strategy = strategyService.selectStrategyByStrategyId(Long.valueOf(1));Context context = new Context(); // 导包是org.thymeleaf.context//注意2:获取发送的内容传入thymeleaf模板中context.setVariable("content", strategy.getStrategyContent());String content = templateEngine.process("mailTemplate.html", context);//System.out.println(content);mailService.sendHtmlMailThymeLeaf(mailFrom, "定义发件人名字", mailTo, cc, "定义邮件标题", content);System.out.println("邮件发送成功");}

7.thymeleaf模板 mailTemplate.html

<!DOCTYPE html><html lang="en" xmlns:th=""><head><meta charset="UTF-8"><title>邮件发送</title></head><body><!--使用富文本框包含HTML标签 使用 th:utext标签 会解析html,显示相应的效果--><div th:utext="${content}">Some escaped text</div></body></html>

实现效果如下:

文章部分参考

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。