1 介绍

参考连接:spring-boot-demo
springboot整合Mail简单文本邮件

2 开始

2.1 pom

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.0.1.RELEASE</version>
  5. </parent>
  6. <properties>
  7. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  8. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  9. <java.version>1.8</java.version>
  10. <jasypt.version>2.1.1</jasypt.version>
  11. </properties>
  12. <dependencies>
  13. <!-- Spring Boot 邮件依赖 -->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-mail</artifactId>
  17. </dependency>
  18. <!--jasypt配置文件加解密-->
  19. <dependency>
  20. <groupId>com.github.ulisesbocchio</groupId>
  21. <artifactId>jasypt-spring-boot-starter</artifactId>
  22. <version>${jasypt.version}</version>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-web</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>cn.hutool</groupId>
  35. <artifactId>hutool-all</artifactId>
  36. <version>5.4.1</version>
  37. </dependency>
  38. <!-- Spring Boot 模板依赖 -->
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  42. </dependency>
  43. </dependencies>
  44. <build>
  45. <finalName>spring-boot-demo-email</finalName>
  46. <plugins>
  47. <plugin>
  48. <groupId>org.springframework.boot</groupId>
  49. <artifactId>spring-boot-maven-plugin</artifactId>
  50. </plugin>
  51. </plugins>
  52. </build>

2.2 application.yml

  1. spring:
  2. mail:
  3. host: smtp.qq.com #SMTP服务器地址
  4. port: 465
  5. username: ***3457107 #登陆账号
  6. # 敏感数据时,可用jasypt加密,格式:ENC(加密字符串),算法:
  7. password: ENC(your encryptor code) #登陆密码(或授权码)
  8. #服务协议
  9. protocol: smtp
  10. # 连接失败,跳过错误
  11. test-connection: true
  12. # 编码集
  13. default-encoding: UTF-8
  14. properties:
  15. from: ***3457107@qq.com #邮件发信人(即真实邮箱)
  16. to: ***7887868@qq.com # 邮件接信人(为方便测试)
  17. # 设置是否需要认证
  18. mail.smtp.auth: true
  19. #
  20. mail.smtp.starttls.enable: true
  21. mail.smtp.starttls.required: true
  22. # ssl
  23. mail.smtp.ssl.enable: true
  24. servlet:
  25. multipart:
  26. max-file-size: 10MB #限制单个文件大小
  27. max-request-size: 50MB #限制请求总量
  28. # 为 jasypt 配置解密秘钥
  29. jasypt:
  30. encryptor:
  31. password: hikktn
  32. # 自定义算法,默认算法:PBEWithMD5AndDES
  33. ivGeneratorClassname: org.jasypt.salt.RandomIVGenerator

2.3 MailService.java

  1. public class MailService {
  2. /**
  3. * java邮件发送类
  4. */
  5. @Autowired
  6. private JavaMailSender mailSender;
  7. /**
  8. * 发件人邮箱
  9. */
  10. @Value("${spring.mail.properties.from}")
  11. private String from;
  12. /**
  13. * 收件人邮箱
  14. */
  15. @Value("${spring.mail.properties.to}")
  16. private String to;
  17. /**
  18. * 发送HTML邮件
  19. *
  20. * @param subject 邮件主题
  21. * @param content 邮件内容
  22. * @param cc 抄送地址
  23. * @throws MessagingException 邮件发送异常
  24. */
  25. @Override
  26. public void sendHtmlMail(String subject, String content, String... cc) throws MessagingException {
  27. // 创建模板消息类
  28. MimeMessage message = mailSender.createMimeMessage();
  29. // 创建模板消息附带信息
  30. MimeMessageHelper helper = new MimeMessageHelper(message, true);
  31. // 设置发件人邮箱
  32. helper.setFrom(from);
  33. // 设置收件人邮箱
  34. helper.setTo(to);
  35. // 设置邮件标题
  36. helper.setSubject(subject);
  37. // 设置邮件主体内容, true 表示带有附件或html
  38. helper.setText(content, true);
  39. // 抄送人不为空的场合
  40. if (ArrayUtil.isNotEmpty(cc)) {
  41. // 设置抄送人
  42. helper.setCc(cc);
  43. }
  44. // 发送消息
  45. mailSender.send(message);
  46. }
  47. }

2.4 test.html

存放目录:resources\email

  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>SpringBootMailDemo</title>
  6. <style>
  7. body {
  8. text-align: center;
  9. margin-left: auto;
  10. margin-right: auto;
  11. }
  12. #welcome {
  13. text-align: center;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div id="welcome">
  19. <h3>欢迎使用 <span th:text="${project}"></span> - Powered By <span th:text=" ${author}"></span></h3>
  20. <span th:text="${url}"></span>
  21. <div style="text-align: center; padding: 10px">
  22. <a style="text-decoration: none;" href="#" th:href="@{${url}}" target="_bank">
  23. <strong>hikktn,个人博客!</strong>
  24. </a>
  25. </div>
  26. </div>
  27. </body>
  28. </html>

2.5 测试类

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class MailServiceTest {
  4. @Autowired
  5. private MailService mailService;
  6. /**
  7. * 测试HTML邮件,自定义模板目录
  8. *
  9. * @throws MessagingException 邮件异常
  10. */
  11. @Test
  12. public void sendHtmlMail2() throws MessagingException {
  13. // 创建一个spring资源模板解析器
  14. SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
  15. // 设置上下文
  16. templateResolver.setApplicationContext(context);
  17. // 禁用缓存
  18. templateResolver.setCacheable(false);
  19. // 设置自定义模板目录
  20. templateResolver.setPrefix("classpath:/email/");
  21. // 设置文件后缀
  22. templateResolver.setSuffix(".html");
  23. // 设置模板解析
  24. templateEngine.setTemplateResolver(templateResolver);
  25. Context context = new Context();
  26. context.setVariable("project", "SpringBootMailDemo2");
  27. context.setVariable("author", "hikktn");
  28. context.setVariable("url", "https://blog.csdn.net/qq_41520636");
  29. // 模板引擎指向test.html页面
  30. String emailTemplate = templateEngine.process("test", context);
  31. mailService.sendHtmlMail("这是一封模板HTML邮件2", emailTemplate);
  32. }
  33. }

2.6 结果

SpringBoot整合Mail发送HTML邮件,自定义模板目录 - 图1