springboot项目邮件任务
在spring boot项目中使用邮件发送消息,比如注册用户时验证邮箱...
开发步骤:
- 引入依赖
- springboot自动配置MailSenderAutoConfiguration
- 手动配置MailPropertis内容
- 自动装配JavaMailSender
- 测试邮件发送
1 导入依赖
需要导入依赖:Java Mail Sender
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2 配置邮件服务于application.yml文件
简单配置
spring:
mail:
# 邮件服务地址
host: smtp.qq.com
# qq邮箱
username: *****@qq.com
# 授权码(注意! 不是邮箱密码)
password: ******* # 经加密处理
# other
properties:
mail:
# 是否开启SSL(QQ邮箱请开启)
smtp:
ssl:
enable: true
完整配置
spring:
mail:
# 邮件服务地址
host: smtp.qq.com
# 邮件服务端口
port: 465
# 编码格式
default-encoding: UTF-8
# qq邮箱
username: ****@qq.com
# 授权码(注意! 不是邮箱密码)
password: **********
# 协议
protocol: smtp
# other
properties:
mail:
# 是否开启SSL(QQ邮箱请开启)
smtp:
ssl:
enable: true
required: true
# 邮件接收时间限制(毫秒)
timeout: 10000
# 连接时间显示
connectiontimeout: 10000
# 邮件发送时间的限制,单位毫秒
writetimeout: 10000
3 创建测试类测试
发送简单邮件
在测试类中进行测试要加@SpringBootTest注解
发送简单邮件的时候只支持文本,不支持html
@Autowired
private JavaMailSenderImpl javaMailSender;
@Test
void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage(); // 创建消息对象
message.setSubject("标题"); // 标题
message.setText("正文"); // 只支持文本, 不支持html
message.setTo("1435430561@qq.com"); // 收件人
message.setFrom("1435430561@qq.com"); // 发件人
javaMailSender.send(message); // 发送
}
发送复杂邮件(可带有附件信息)
@Autowired
private JavaMailSenderImpl javaMailSender;
@Test
void testMail() throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setSubject("标题"); // 标题
// 内容, 第二个参数为true则以html方式发送, 否则以普通文本发送
helper.setText("<h1 style='red'>内容</h1>", true);
//发送附件
helper.addAttachment("1.jpg",new File("C:\14354\Desktop\loading\加载-063.gif"));
helper.addAttachment("2.jpg",new File("C:\14354\Desktop\loading\加载-067.gif"));
helper.setTo("1435430561@qq.com"); // 收件人
helper.setFrom("1435430561@qq.com"); // 发件人
javaMailSender.send(message); // 发送
}