我不考虑将来。要是我既要想着今天,又要操心明天,生活就没意思了。 每当事情遭到不能再糟的地步时,我总发现天无绝人之路。
目录
- 前言
- 环境准备
- 所需依赖
- 配置文件
- 代码实现
前言
关于如何搭建SpringBoot工程以及开启Web功能,
可以查看我的这篇博客:用Spring Initializr快速构建SpringBoot及整合MVC
环境准备
首先,我们需要打开QQ邮箱,进入设置,选中账户,开启SMTP服务,如图:
并生成授权码,授权码的作用相当于QQ邮箱的密码。
所需依赖
在依赖管理文件pom.xml
中导入发送邮件所需要的起步依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
在配置文件application.yml
中配置发送邮箱方的相关信息:
spring:
# 配置QQ邮箱
mail:
#默认发送邮件基于smtp协议 可不要
protocol: smtp
#smtp服务器地址
host: smtp.qq.com
#发送方的邮箱
username: ******@qq.com
#发送方的密码(授权码或者QQ邮箱密码都可以)
password: ********
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
代码实现
首先需要一个邮件实体类:
package com.guqueyue.entity;
/**
* @author guqueyue
* @Date 2020/5/26
**/
@Data //lombok插件的注解,若是没有用lombok插件,请自行生成getter、setter方法
@AllArgsConstructor //全参构造方法
@NoArgsConstructor //无参构造方法
@Accessors(chain = true) //开启链式编程
public class Email implements Serializable {
/**
* 接收者
*/
private String to;
/**
* 邮件标题
*/
private String subject;
/**
* 发送内容
*/
private String context;
/**
* 发送时间
*/
private Date sendTime;
}
其次在Web层新建一个Controller,代码如下:
package com.guqueyue.controller;
/**
* @author guqueyue
* @Date 2020/5/26
* 发送邮件
**/
@Controller
@RequestMapping("/send")
public class MailController {
@Autowired
private JavaMailSender javaMailSender;
/**
* 获取配置文件里的发送方
*/
@Value("${spring.mail.username}")
private String from;
@RequestMapping("/mail")
public void sendMail() throws MessagingException {
// 设置邮件内容
Email email = new Email()
.setSubject("这是一封测试邮件")
.setContext("<hr/>盖西伯(周文王)拘而演《周易》;<br/> 仲尼厄而作《春秋》;<br/>屈原放逐,乃赋《离骚》;<br/>" +
"左丘失明,厥有《国语》;<br/>孙子膑脚,《兵法》修列;<br/>" +
"不韦迁蜀,世传《吕览》;<br/>韩非囚秦,《说难》、《孤愤》;《诗》三百篇大抵圣贤发愤之所作也。<hr/>")
.setTo(from)
.setSendTime(new Date());
// 发送邮件
send(email);
}
/**
* 发送邮件的方法
*/
public void send(Email email) throws MessagingException {
System.out.println("接收到的邮件对象为:" + email);
//创建一封邮件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//Spring提供的一个便捷的邮件设置对象
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
//设置邮件的内容
//标题
mimeMessageHelper.setSubject(email.getSubject());
//发送方
mimeMessageHelper.setFrom(from);
//接收方
mimeMessageHelper.setTo(email.getTo());//接收者
// mimeMessageHelper.setCc("***@qq.com");//抄送
// mimeMessageHelper.setBcc("***@qq.com");//密送
//设置内容
mimeMessageHelper.setText(email.getContext(), true);
//发送附件
// mimeMessageHelper.addAttachment("我的附件.jpg", new File("C:\\worker\\images\\7f25dc3b-13e5-42a5-a205-8276b0528040"));
//设置当前时间
mimeMessageHelper.setSentDate(email.getSendTime());
//发送邮件
javaMailSender.send(mimeMessage);
System.out.println("成功发送邮件......");
}
}
然后运行程序,在浏览器输入http://localhost:8080/send/mail
,不必理会页面的404错误,发现邮箱收到以下邮件即为成功: