1、获取邮箱授权码
1、点击设置
2、点击账户
3、开启服务。
2、发送简单邮件
1、创建Spring Boot工程,添加maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
2、配置邮箱参数
spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=1756730392@qq.com
spring.mail.password=uywcudmwiopmcjji
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.sockewtFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
3、创建MailService来封装邮件的发送
@Component
public class MailService {
@Autowired
JavaMailSender javaMailSender;
public void sendSimpleMail(String from,String to,String cc,String subject,String content){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
// message.setCc(cc);
message.setSubject(subject);
message.setText(content);
javaMailSender.send(message);
}
}
4、测试发送邮件
class EmailApplicationTests {
@Autowired
MailService mailService;
@Test
void contextLoads() {
mailService.sendSimpleMail("1756730392@qq.com","y15179493908@163.com","","测试邮件主题","测试邮件内容");
}
}
5、运行结果,邮件发送成功。
3、发送带附件的邮件
MailService添加如下方法:
public void sendAttachFileMail(String from,String to,String subject,String content,File file){
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message,true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(content);
mimeMessageHelper.addAttachment(file.getName(),file);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
发送:
@Test
public void test(){
mailService.sendAttachFileMail("1756730392@qq.com","y15179493908@163.com","测试邮件主题","测试邮件内容",new File("I:\\1.jpg"));
}
4、发送带图片资源的邮件
MailService添加如下方法:
/**
* 发送带图片资源的邮件
* */
public void sendMailWithImg(String from,String to,String subject,String content,String[] srcPath,String[] resIds){
if (srcPath.length != resIds.length){
System.out.println("发送失败");
return;
}
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message,true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(content,true);
for (int i = 0; i < srcPath.length; i++) {
FileSystemResource resource = new FileSystemResource(new File(srcPath[i]));
mimeMessageHelper.addInline(resIds[i],resource);
}
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
发送:
@Test
public void test1(){
mailService.sendMailWithImg("1756730392@qq.com",
"y15179493908@163.com",
"测试邮件主题(图片)",
"<div>hello,这是一封带图片资源的邮件:" +
"这是图片1:<div><img src='cid:p01'/></div>"+
"这是图片2:<div><img src='cid:p02'/></div>"+
"</div>",
new String[]{"I:\\1.jpg","I:\\2.jpg"},
new String[]{"p01","p02"});
}
5、使用Thymeleaf构建邮件模板
1、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2、编写邮件模板
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>邮件</title>
</head>
<body>
<div>邮箱激活</div>
<div>你的注册信息为:</div>
<table border="1">
<tr>
<td>用户名:</td>
<td th:text="${username}"></td>
</tr>
<tr>
<td>用户性别:</td>
<td th:text="${gender}"></td>
</tr>
</table>
</body>
</html>
3、MailService添加如下方法:
/**
* 发送html模板
* */
public void sendHtmlMail(String from,String to,String subject,String content){
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message,true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(content,true);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
4、发邮件
@Test
public void sendMailThymeleaf(){
Context context = new Context();
context.setVariable("username","youyuan");
context.setVariable("gender","男");
String mail = templateEngine.process("mail", context);
mailService.sendHtmlMail("1756730392@qq.com","y15179493908@163.com","测试邮件主题",mail);
}