Spring 中的邮件任务
- 邮件发送需要引入spring-boot-starter-mail
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- springboot 自动配置MailSenderAutoConfiguration
在 MailSender的自动配置类用 springboot 2.x版本 导入了MailSenderJndiConfiguration.class,MailSenderPropertiesConfiguration.class 两个类;其中 MailSenderJndiConfiguration 类中提供了 JavaMailSenderImpl 组件
@Bean
JavaMailSenderImpl mailSender(Session session) {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setDefaultEncoding(this.properties.getDefaultEncoding().name());
sender.setSession(session);
return sender;
}
- 自动装配JavaMailSender
在测试类中自动注入装配 JavaMailSender
@Autowired
JavaMailSenderImpl mailSender;
- 定义MailProperties内容,配置在application.yml
spring.mail.username=320147991@qq.com
spring.mail.password=**************
#smtp是一项邮件的服务
spring.mail.host=smtp.qq.com
其中springmailpassword 是在使用官方smtp服务时提供的第三方登录码,而并非qq密码 需要通过手机自行去验证一下
- 测试邮件发送
邮件的发送有两种形式一种简单模式 (文字),一种是复杂模式 (可携带附件)
简单模式(以 SimpleMailMessage 发送)
SimpleMailMessage message = new SimpleMailMessage();
// 邮件设置
message.setSubject("通知"); //标题
message.setText("好好学java"); //内容
message.setTo("nineiceberg@163.com"); //发向谁
message.setFrom("320147991@qq.com"); 源自谁
mailSender.send(message);
复杂模式(以 MineMessage 发送)
//1. 创建一个复杂的消息邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true)
helper.setSubject("通知");
helper.setFrom("320147991@qq.com");
helper.setTo("nineiceberg@163.com");
helper.setText("<b style='color:red'>好好学习</b>",true);
// 上传文件
helper.addAttachment("1111.png",new File("C:\\Users\\32014\\Pictures\\1111.png"));
mailSender.send(mimeMessage);
// 注意邮件发送是以mimeMessage发送的,但是mimeMessage的配置是用过 MimeMessageHelper 来配置的