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 filePath 附件地址
  23. * @param cc 抄送地址
  24. * @throws MessagingException 邮件发送异常
  25. */
  26. @Override
  27. public void sendAttachmentsMail(String subject, String content, String filePath, String... cc) throws MessagingException {
  28. // 创建模板消息类
  29. MimeMessage message = mailSender.createMimeMessage();
  30. // 创建模板消息附带信息,是否发送的邮件是富文本(附件,图片,html等)
  31. MimeMessageHelper helper = new MimeMessageHelper(message, true);
  32. // 设置发件人邮箱
  33. helper.setFrom(from);
  34. // 设置收件人邮箱
  35. helper.setTo(to);
  36. // 设置邮件标题
  37. helper.setSubject(subject);
  38. // 设置邮件主体内容, true 表示带有附件或html
  39. helper.setText(content, true);
  40. // 抄送人不为空的场合
  41. if (ArrayUtil.isNotEmpty(cc)) {
  42. // 设置抄送人
  43. helper.setCc(cc);
  44. }
  45. // 创建系统文件资源
  46. FileSystemResource file = new FileSystemResource(new File(filePath));
  47. // File.separator:“\"
  48. // String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
  49. String fileName = file.getFilename();
  50. // 添加邮件附件
  51. helper.addAttachment(fileName, file);
  52. // 发送消息
  53. mailSender.send(message);
  54. }
  55. }

2.4 上传的附件

存放目录: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 sendAttachmentsMail() throws MessagingException {
  13. URL resource = ResourceUtil.getResource("static/xkcoding.png");
  14. mailService.sendAttachmentsMail("这是一封带附件的邮件", "邮件中有附件,请注意查收!", resource.getPath());
  15. }
  16. }

2.6 结果

SpringBoot整合Mail发送附件邮件 - 图2