1.1、pom.xml 导入坐标
<!--mail-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1.2、在 yml 文件中配置相应内容
spring:
mail:
host: smtp.qq.com
username: 你自己的qq号@qq.com
password: qq邮箱-》设置-》POP3/SMTP服务-》点击开启-》发验证码-》收到验证码后填入
properties:
mail:
smtp:
ssl:
enable: true
default-encoding: UTF-8
port: 465
1.3、创建响应的实体类 【用了 lombok;懒】
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EmailInfo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String title;
private String toEmail;
}
1.4、创建Mapper接口
@Mapper
public interface EmailInfoMapper {
}
1.5、创建Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.it.hashiqiexercise.mapper.EmailInfoMapper">
</mapper>
1.6、创建业务层
public interface EmailInfoService {
String send(EmailInfo emailInfo);
}
1.7、创建业务实现层
@Service
public class EmailInfoServiceImpl implements EmailInfoService {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private JavaMailSender mailSender;
// 这里的@Value 是把 yaml文件中的spring.mail.username值进行引入
@Value("${spring.mail.username}")
private String from;
@Override
public String send(EmailInfo emailInfo) {
try {
SimpleMailMessage mailMessage = new SimpleMailMessage();
// 主题
mailMessage.setSubject("验证码邮件");
// 生成随机数
String code = randomCode();
// 内容
mailMessage.setText("您收到的验证码是:" + code + ", 五分钟有效,请妥善保管");
// 发给谁
mailMessage.setTo(emailInfo.getToEmail());
// 自己的邮箱
mailMessage.setFrom(from);
// 发送
mailSender.send(mailMessage);
} catch (Exception e) {
e.printStackTrace();
return "发送失败,出现异常";
}
return "发送成功";
}
/**
* 随机生成6位数的虚拟验证码
* @return
*/
public String randomCode() {
StringBuilder str = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 6; i++) {
str.append(random.nextInt(10));
}
return str.toString();
}
}
1.8、创建控制层
@RestController
public class EmailInfoController {
@Autowired
EmailInfoService emailInfoService;
@RequestMapping("email/send")
public String send(EmailInfo emailInfo){
return emailInfoService.send(emailInfo);
}
}
1.9、页面路径测试
1.10、完成测试
ok~