application.properties:
#配置 SMTP 服务器地址
spring.mail.host=smtp.qq.com
#SMTP 服务器的端口 163邮箱不用SSL默认25端口,用SSL可用465/994端口
spring.mail.port=465
#配置邮箱用户名
spring.mail.username=XXXXXXXX@qq.com
#配置密码,注意,不是真正的密码,而是刚刚申请到的授权码
spring.mail.password=XXXXXXXX
#默认的邮件编码
spring.mail.default-encoding=UTF-8
#一定要开启ssl,不然会503 验证失败的
spring.mail.properties.mail.smtp.ssl.enable=true
#配饰 SSL 加密工厂
spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
spring.mail.properties.mail.debug=true
测试类:
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
@SpringBootTest
class JavaMailApplicationTests {
@Autowired
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}")
private String sendName;
@Autowired
private TemplateEngine templateEngine;
@Test
public void contextLoads() throws MessagingException {
//发送简单邮件:
// 构建一个邮件对象
// SimpleMailMessage message = new SimpleMailMessage();
// // 设置邮件主题
// message.setSubject("这是一封测试邮件");
// //设置邮件发送者
// message.setFrom(sendName);
// //设置邮件接收者,可以有多个接收者
// message.setTo("22872903@qq.com");
// //设置邮件发送日期
// message.setSentDate(new Date());
// //设置邮件的正文
// message.setText("这是测试邮件的正文");
// //发送邮件
// javaMailSender.send(message);
//发送HTML测试:
// MimeMessage message = javaMailSender.createMimeMessage();
// MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
// messageHelper.setFrom(sendName);
// messageHelper.setTo("22872903@qq.com");
// messageHelper.setSubject("HTML邮件");
// String html = "<div><h1><a name=\"hello\"></a><span>Hello</span></h1><blockquote><p><span>this is a html email.</span></p></blockquote><p> </p><p><span>"
// + "发送HTML测试" + "</span></p></div>";
// messageHelper.setText(html, true);
// javaMailSender.send(message);
//发送包含附件的邮件:
// MimeMessage message = javaMailSender.createMimeMessage();
// MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
// messageHelper.setFrom(sendName);
// messageHelper.setTo("22872903@qq.com");
// messageHelper.setSubject("一封包含附件的邮件");
// messageHelper.setText("一封包含附件的邮件HHHHHHH");
// // 该文件位于resources目录下
// // 文件路径不能直接写文件名,系统会报错找不到路径,而IDEA却能直接映射过去
// // 文件路径可以写成相对路径src/main/resources/x.pdf,也可以用绝对路径:System.getProperty("user.dir") + "/src/main/resources/x.pdf"
// File file = new File("src/main/resources/dttp.gif");
// //File file = new File(System.getProperty("user.dir") + "src/main/resources/dttp.gif");
// System.out.println("文件是否存在:" + file.exists());
// messageHelper.addAttachment(file.getName(), file);
// javaMailSender.send(message);
//HTML含图片发送:
// MimeMessage message = javaMailSender.createMimeMessage();
// MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
// messageHelper.setFrom(sendName);
// messageHelper.setTo("22872903@qq.com");
// messageHelper.setSubject("带静态资源图片的HTML邮件");
// String html = "<div><h1><a name=\"hello\"></a><span>Hello</span></h1><blockquote><p><span>this is a html email.</span></p></blockquote><p> </p><p><span>"
// + "带静态资源图片的HTML邮件HHHHHH" + "</span></p><img src='cid:myImg' /></div>";
// messageHelper.setText(html, true);
// File file = new File("src/main/resources/a.jpg");
// messageHelper.addInline("myImg", file);
// javaMailSender.send(message);
//使用HTML模板文件发送邮件:
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(sendName);
messageHelper.setTo("22872903@qq.com");
messageHelper.setSubject("使用HTML模板文件发送邮件");
Context context = new Context();//org.thymeleaf.context.Context
context.setVariable("msg", "使用HTML模板文件发送邮件HHHH");
//org.thymeleaf.TemplateEngine;
messageHelper.setText(templateEngine.process("EmailTemplate", context), true);
javaMailSender.send(message);
}
}
测试模板时需要引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
EmailTemplate.html模板:
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>邮件模板</title>
</head>
<body>
Hello, this is your msg: <span th:text="${msg}"></span>
</body>
</html>