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. * 发送正文中有静态资源的邮件
  19. *
  20. * @param subject 邮件主题
  21. * @param content 邮件内容
  22. * @param rscPath 静态资源地址
  23. * @param rscId 静态资源id
  24. * @param cc 抄送地址
  25. * @throws MessagingException 邮件发送异常
  26. */
  27. @Override
  28. public void sendResourceMail(String subject, String content, String rscPath, String rscId, String... cc) throws MessagingException {
  29. MimeMessage message = mailSender.createMimeMessage();
  30. MimeMessageHelper helper = new MimeMessageHelper(message, true);
  31. helper.setFrom(from);
  32. helper.setTo(to);
  33. helper.setSubject(subject);
  34. helper.setText(content, true);
  35. if (ArrayUtil.isNotEmpty(cc)) {
  36. helper.setCc(cc);
  37. }
  38. FileSystemResource file = new FileSystemResource(new File(rscPath));
  39. helper.addInline(rscId, file);
  40. mailSender.send(message);
  41. }
  42. }

2.4 静态资源

存放目录:resources\static\xkcoding.png
SpringBoot整合Mail发送静态资源邮件 - 图1

2.5 测试类

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class MailServiceTest {
  4. @Autowired
  5. private MailService mailService;
  6. /**
  7. * 测试静态资源邮件
  8. *
  9. * @throws MessagingException 邮件异常
  10. */
  11. @Test
  12. public void sendResourceMail() throws MessagingException {
  13. String rscId = "xkcoding";
  14. String content = "<html><body>这是带静态资源的邮件<br/><img src=\'cid:" + rscId + "\' ></body></html>";
  15. URL resource = ResourceUtil.getResource("static/xkcoding.png");
  16. mailService.sendResourceMail( "这是一封带静态资源的邮件", content, resource.getPath(), rscId);
  17. }
  18. }

2.6 结果

SpringBoot整合Mail发送静态资源邮件 - 图2