1.添加Maven依赖:
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.配置文件中进行mail配置:
XML
spring:
mail:
host: smtp.163.com
username: XXXXXXXXXXXX@163.com
#授权码 需要username账号开启POP3/IMAP/SMTP/Exchange/CardDAV 服务
password: XXXXXXXXXXX
default-encoding: UTF-8
properties:
mail:
smtp:
ssl:
enable: true
auth: true
3.MailUtil类(当成固定写法就可以)
java
@Component
public class MailUtil {
@Autowired
private JavaMailSender javaMailSender;
//获取application.properties中的属性值
@Value("${spring.mail.username}")
private String fromMail;
public void SendHtmlMail(String subject,String content,String toMail) throws MessagingException {
MimeMessage msg=javaMailSender.createMimeMessage();
MimeMessageHelper helper=
new MimeMessageHelper(msg,true,"UTF-8");
helper.setFrom(fromMail);
helper.setTo(toMail);
helper.setSubject(subject);
//可以识别html标签 True
helper.setText(content,true);
javaMailSender.send(msg);
}
}
4.编写控制器,服务,Mapper接口,实现Mapper映射
服务层的sendMail()代码:
java
public int sendEmail(Map<String,String> param){
int row=0;
//从Mapper层返回的Map对象会被自动装成List类型的数据
List<Map<String,Object>> list =adminMapper.findByEmail(param);
if(list!=null&& !list.isEmpty()){
//文件的标题
String subject="密码找回";
//要发送给谁的邮件地址
String toMail=param.get("adminEmail");
//邮件的内容
String content="请点击以下链接完成密码的重置"+
"<a href='http://localhost:5173/resetPwd?adminEmail="
+toMail+"'>\uD83E\uDD88\uD83E\uDD88\uD83D\uDC2F\uD83D\uDC2F</a>";
try {
//发送邮件
mailUtil.SendHtmlMail(subject,content,toMail);
row=1;
} catch (MessagingException e) {
row=2;
}
}
return row;
}
5.编写Mapper层映射
resultType指定返回值的类型是一行数据,封装成了Map对象,key为数据库中的列,value为数据库中的值
parameterType表示参数的类型是map
#{adminEmail}表示从参数map中的key取出的值
XML
<select id="findByEmail" resultType="java.util.Map" parameterType="map">
select * from tbl_admin_info
where adminEmail=#{adminEmail}
</select>
现在,可以从前端发送请求了,发送之后,会先到AdminController层,然后调用Service层方法,然后到了Mapper数据访问层,程序去搜索数据库,返回List列表,继续返回row,到达前端后进行判断:
TypeScript
function findPwd(){
axios.post("/api/admin/sendMail",admin)
.then(rst=>{
if(rst.data==1){
ElMessage.success("去邮箱吧")
}
else{
ElMessage.error("修改失败");
}
}).catch(err=>{
console.log(err);
})
}
之后来到邮箱:

6.最后写写修改密码的逻辑即可.