base on springboot

依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-mail</artifactId>
  4. </dependency>

配置

  1. spring.mail.host=partner.outlook.cn
  2. spring.mail.username=xxx@xxx.com
  3. spring.mail.password=xxxx
  4. spring.mail.port=587
  5. spring.mail.protocol=smtp
  6. spring.mail.properties.mail.smtp.connectiontimeout=5000
  7. spring.mail.properties.mail.smtp.timeout=3000
  8. spring.mail.properties.mail.smtp.writetimeout=5000
  9. spring.mail.default-encoding=UTF-8
  10. # 是否启动时测试连接
  11. spring.mail.test-connection=false

impl

  1. @Autowired
  2. private JavaMailSender javaMailSender;
  3. @Override
  4. public void sendMail(SystemMailDTO dto) {
  5. MimeMessage mimeMessage = javaMailSender.createMimeMessage();
  6. MimeMessageHelper messageHelper;
  7. try {
  8. messageHelper = new MimeMessageHelper(mimeMessage, true);
  9. // nick<xxx.xxx.com>可以使用昵称进行发送
  10. messageHelper.setFrom(nick + "<" +dto.getMailFrom() + ">");
  11. messageHelper.setTo(dto.getMailTo().split(","));
  12. messageHelper.setCc(dto.getMailCc().split(","));
  13. messageHelper.setBcc(dto.getMailBcc().split(","));
  14. messageHelper.setSubject(dto.getSubject());
  15. messageHelper.setText(dto.getContent());
  16. for (SystemFileDTO file : dto.getMailAttachments()) {
  17. messageHelper.addAttachment(file.getName(), new File(file.getPath()));
  18. }
  19. javaMailSender.send(mimeMessage);
  20. } catch (MessagingException e) {
  21. }
  22. }
  23. /*
  24. * 部分场景可能需要配置smtp的tls
  25. */
  26. @Override
  27. public void afterPropertiesSet() {
  28. enable = Boolean.parseBoolean(enableInProperties);
  29. if (javaMailSender instanceof JavaMailSenderImpl) {
  30. JavaMailSenderImpl mailSender = (JavaMailSenderImpl) javaMailSender;
  31. Properties properties = mailSender.getJavaMailProperties();
  32. properties.put("mail.smtp.auth", true);
  33. properties.put("mail.smtp.starttls.enable", true);
  34. }
  35. }