引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- 发送模板文件需要用到 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
配置属性
application.properties
中配置相应的属性
spring.mail.host=smtp.163.com
spring.mail.username=xxxxxxxxx@163.com
spring.mail.password=xxxxxxxxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
用法
Service类
package com.lzc.email.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Set;
/**
* Created by lzc
* 2018/12/13 23:30
*/
@Service
@Slf4j
public class EmailServiceImpl implements EmailService {
@Autowired
private JavaMailSender mailSender;// spring 提供的邮件发送类
@Value("${spring.mail.username}")
private String from = ""; // 邮件发送人,这里直接从配置文件中获取
@Override
public void sendSimpleEmail(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();// 创建简单邮件消息
message.setFrom(from);
message.setTo(to); //设置收件人
/* String[] adds = {"xxx@qq.com","yyy@qq.com"}; // 同时发送给多人
message.setTo(adds);*/
message.setSubject(subject); // 设置主题
message.setText(content); // 设置内容
try {
mailSender.send(message); // 执行发送邮件
log.info("简单邮件已经发送。");
} catch (Exception e) {
log.error("发送简单邮件时发生异常!", e);
}
}
@Override
public void sendHtmlEmail(String to, String subject, String content) {
MimeMessage message = mailSender.createMimeMessage();
try {
// true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
mailSender.send(message);
log.info("html邮件发送成功");
} catch (MessagingException e) {
log.error("发送html邮件时发生异常!", e);
}
}
@Override
public void sendAttachmentsEmail(String to, String subject, String content, Set<String> filePaths) {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content);
for (String filePath : filePaths) {
FileSystemResource file = new FileSystemResource(new File(filePath));
helper.addAttachment(file.getFilename(), file);
log.info(file.getFilename());
}
mailSender.send(mimeMessage);
log.info("发送成功");
} catch (MessagingException e) {
e.printStackTrace();
log.info("发送失败" + e);
}
}
}
测试类
package com.lzc.email;
import com.lzc.email.service.EmailService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
;
import java.util.Set;
import java.util.TreeSet;
import java.util.UUID;
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class EmailApplicationTests {
@Autowired
private EmailService emailService;
@Autowired
private TemplateEngine templateEngine;
@Test
public void contextLoads() {
}
/**
* 发送简单邮件
*/
@Test
public void test1() {
emailService.sendSimpleEmail("923226145@qq.com","简单邮件","简单邮件");
}
/**
* 发送附件文件
*/
@Test
public void test2() {
Set<String> files = new TreeSet<>();
files.add("G:\\0019032438899352_b.jpg");
files.add("G:\\10839717_103723525199_2.jpg");
emailService.sendAttachmentsEmail("923226145@qq.com","发送附件","发送附件", files);
}
/**
* 发送HTML邮件
*/
@Test
public void test3() {
String content="<html>\n" +
"<body>\n" +
" <h3>hello world ! 这是一封Html邮件!</h3>\n" +
"</body>\n" +
"</html>";
emailService.sendHtmlEmail("923226145@qq.com","html邮件", content);
}
/**
* 发送模板邮件
*/
@Test
public void test4() {
//创建邮件正文
Context context = new Context();
// 传递参数到模板文件中
context.setVariable("token", UUID.randomUUID().toString().replace("-",""));
// 在templates目录下新建一个email文件夹,在email文件夹下新建一个emailTemplate的HTML文件
String emailContent = templateEngine.process("email/emailTemplate", context);
emailService.sendHtmlEmail("923226145@qq.com","模板邮件",emailContent);
}
}
emailTemplate文件如下
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
您好,这是验证邮件,请点击下面的链接完成修改密码,<br/>
<a href="#" th:href="@{http://www.lizhencheng.xyz/setPassword/{token}(token=${token})}">修改密码</a>
</body>
</html>
代码地址:https://gitee.com/lzc_lzc/SpringBoot-learning/tree/master/email