一。邮箱要先开启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