base on springboot
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置
spring.mail.host=partner.outlook.cn
spring.mail.username=xxx@xxx.com
spring.mail.password=xxxx
spring.mail.port=587
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
spring.mail.default-encoding=UTF-8
# 是否启动时测试连接
spring.mail.test-connection=false
impl
@Autowired
private JavaMailSender javaMailSender;
@Override
public void sendMail(SystemMailDTO dto) {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper;
try {
messageHelper = new MimeMessageHelper(mimeMessage, true);
// nick<xxx.xxx.com>可以使用昵称进行发送
messageHelper.setFrom(nick + "<" +dto.getMailFrom() + ">");
messageHelper.setTo(dto.getMailTo().split(","));
messageHelper.setCc(dto.getMailCc().split(","));
messageHelper.setBcc(dto.getMailBcc().split(","));
messageHelper.setSubject(dto.getSubject());
messageHelper.setText(dto.getContent());
for (SystemFileDTO file : dto.getMailAttachments()) {
messageHelper.addAttachment(file.getName(), new File(file.getPath()));
}
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
}
}
/*
* 部分场景可能需要配置smtp的tls
*/
@Override
public void afterPropertiesSet() {
enable = Boolean.parseBoolean(enableInProperties);
if (javaMailSender instanceof JavaMailSenderImpl) {
JavaMailSenderImpl mailSender = (JavaMailSenderImpl) javaMailSender;
Properties properties = mailSender.getJavaMailProperties();
properties.put("mail.smtp.auth", true);
properties.put("mail.smtp.starttls.enable", true);
}
}