所有邮件的发送都需要有运营商的支持,例如qq邮箱,163等。要发送邮件需要先获取服务上提供的授权码。以qq邮箱为例:
登陆QQ邮箱,设置–账户–开启POP3/SMTP服务 拿到授权码
开启服务
发送验证短信
点我已发送,拿到授权码:
第一步 : 导入jar包
<!--对邮件的支持jar-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
第二步:创建配置文件 application.properties 优先级比application.yml更高,两个都会加载
# 设置邮箱主机(服务商)
spring.mail.host=smtp.qq.com
# 设置用户名,每个人不同
spring.mail.username=8048984@qq.com
# 设置密码,该处的密码是QQ邮箱开启SMTP的授权码而非QQ密码(授权码)
spring.mail.password=qzbxiwjfrwe
# 必须进行授权认证,它的目的就是阻止他人任意乱发邮件
spring.mail.properties.mail.smtp.auth=true
#SMTP加密方式:连接到一个TLS保护连接
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
前面三项不是固定的,后三项是固定的
发送普通邮件,SimpleMessage不支持html代码,不支持携带附件
JavaMailSender 是jar包写好的 直接注入就可以使用
@Autowired
private JavaMailSender mailSender;
//发送简单邮件
@Test
public void SimpleMail(){
SimpleMailMessage message = new SimpleMailMessage();
//设置发件人
message.setFrom("8048984@qq.com");
//设置收件人
message.setTo("5201314@qq.com");
//设置标题
message.setSubject("发送简单邮件");
//设置内容
message.setText("<h1>今天是个好天气,不会解析HTML</h1>");
//发送
mailSender.send(message);
}
发送复杂邮件 MimeMessage ,支持携带附近
//发送复杂邮件
@Test
public void MimeMessage() throws MessagingException {
//创建一个复杂的空邮件
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
//设置发件人
helper.setFrom("8048984@qq.com");
//设置收件人
helper.setTo("5201314@qq.com");
//设置标题
helper.setSubject("明天你是否会想起,昨天你写的日记");
//设置内容 html 解析html true
helper.setText("<h1>今天是个好天气,已经解析HTML</h1>" +
"<a href='http://www.baidu.com'>点我进入百度</a>",true);
//添加附件,filename必须加上后缀,不然会出问题
helper.addAttachment("大飞机.jpg", new File("C:\\Users\\Administrator\\Desktop\\b2\\A380.jpg"));
helper.addAttachment("F22.jpg", new File("C:\\Users\\Administrator\\Desktop\\b2\\F22.jpg"));
//发送邮件
mailSender.send(message);
}