1 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2 邮件发送配置
以qq邮箱发送为例
spring:
mail:
username: xxxx@qq.com # qq邮箱地址
password: ****** # 在qq邮箱开启POP3/SMTP服务服务后获取的授权码
host: smtp.qq.com # qq的smtp服务地址
# qq需要开启加密验证
properties:
mail:
smtp:
ssl:
enable: true
3 编写发送内容
在mail的自动配置中,导入了一个MailSenderPropertiesConfiguration
的配置类,而在这个配置类中注册了一个mailSender
的bean,在发送邮件时使用这个bean发送即可
简单邮件
@Autowired
JavaMailSenderImpl mailSender;
@Test
public void testSimpleMail1(){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("xxxx@qq.com");
message.setTo("xxxx@qq.com");
message.setSubject("test");
message.setText("这是测试邮件");
mailSender.send(message);
}
简单邮件只能发送纯文本信息,可配置的属性有
- setFrom:发送者,需要填写与yml中的username一样的邮箱地址,如果需要自定义发送人名称,可以用这个格式
自定义名称<xxxx@qq.com>
- setTo:发送的对象
- setSubject:邮件的主题
- setText:邮件的正文
- 抄送密送信息等
复杂邮件
@Test
public void testMimeMail() throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
helper.setFrom("xxxx@qq.com");
helper.setTo("xxxx@qq.com");
helper.setSubject("test");
helper.setText("<h1>测试复杂邮件</h1>", true);
helper.addAttachment("testFile", new File(this.getClass().getClassLoader().getResource("static/test.txt").getPath().substring(1)));
mailSender.send(message);
}
复杂邮件除了发送纯文本信息,还可以发送html文本、附件,使用时可以通过MimeMessageHelper
帮助类编写邮件内容,在创建MimeMessageHelper
时有两个可选参数,一个是是否支持附件,第二个是字符编码
如果正文为html文本,需要在setText方法上加上一个true的参数
如果需要添加附件可使用addAttachment方法,第一个参数为文件名,第二个参数可以传递一个File对象