spring boot整合发送邮箱(可一次发送多个)

一。邮箱要先开启IMAP/SMTP服务,开启后会显示授权码,保存下来,这是发送邮件时需要的密码。(我这是qq邮箱)

 

 

 

 

 

 

 

 

 

二。pom.xml,引入依赖

<dependency>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter-mail</artifactId>

</dependency>

 

三。.properties 添加配置

#qq邮箱
spring.mail.host=smtp.qq.com
spring.mail.username=自己的邮箱
spring.mail.password=开启IMAP/SMTP服务后显示的密码
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8

四。写成组件
@Component("EmailTool")
public class EmailTool {

@Value("${spring.mail.username:}")
private String sendEmail;

@Autowired
private JavaMailSender javaMailSender;

/**
* 发送普通邮件
**/
public boolean sendEmail(Map<String, Object> dataMap) {
try {
if (dataMap == null || dataMap.size() <= 0) {
return false;
}
SimpleMailMessage message = new SimpleMailMessage();
//发送邮箱
message.setFrom(sendEmail);
//接收邮箱(可传多个值,如:String[] ems = new String[]{"xxxx@qq.com","xxx@qq.com"})
message.setTo((String[]) dataMap.get("sendToEmail"));
//标题
message.setSubject(dataMap.get("title").toString());
//内容
message.setText(dataMap.get("content").toString());
javaMailSender.send(message);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

/**
* 发送HTML邮件,可以整合邮件模板使用,这里就弄简单点
**/
public boolean sendHtmlEmail(Map<String, Object> dataMap) {
try {
if (dataMap == null || dataMap.size() <= 0) {
return false;
}
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
mimeMessageHelper.setFrom(sendEmail);
mimeMessageHelper.setTo((String[]) dataMap.get("sendToEmail"));
mimeMessageHelper.setSubject(dataMap.get("title").toString());
//内容,如 <h1>标题</h1><br/><p>这是内容</p>
mimeMessageHelper.setText(dataMap.get("content").toString(), true);

javaMailSender.send(mimeMessageHelper.getMimeMessage());
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
}
}

五。测试
  @Autowired
  public EmailTool emailTool;
    @Test
public void contextLoads() throws MessagingException {
String[] ems = new String[]{"xxxx@qq.com","xxxx@qq.com"};
Map<String, Object> valueMap = new HashMap<>();
valueMap.put("sendToEmail",ems);
valueMap.put("title", "测试邮件标题");
valueMap.put("content", "测试邮件内容");
emailTool.sendEmail(valueMap);
}



参考文档:
https://www.cnblogs.com/happy4java/p/11205907.html
posted @ 2020-07-17 14:18  伏沙金  阅读(1400)  评论(0编辑  收藏  举报