开发学习过程中有个短信发送功能,阿里云腾讯云等等都要money,听说qq邮箱可以实现免费发送邮箱的功能(短信发送的平替),就用这个来实现!!!【找了好多好多方法才成功的啊啊啊啊!!!】
标题
第一步:开启QQ邮箱的POP3...服务
参考https://blog.csdn.net/weixin_41957626/article/details/131386155的前半部分来开启相关的邮箱服务(后面代码部分没有参考,因为报错)
第二步:在SpringBoot项目中开发
首先在application.yml文件中进行配置:
java
spring:
mail:
host: smtp.qq.com
username: ****@qq.com # 自己的qq邮箱
password: ******** # 第一步中获取的授权码,不是qq密码!
default-encoding: UTF-8
port: 587 # 端口号465或587
protocol: smtp
# 其他参数
properties:
mail:
#配置SSL,加密工厂,必须配置!否则会报530 ssl错误
smtp:
# socketFactoryClass: javax.net.ssl.SSLSocketFactory
# auth: true
starttls:
# enable: ture
required: true # 测试了下这个必须加
#开启debug模式,邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: true
接着写controller
java
@RestController
@RequestMapping("/email")
public class EmailController {
@Resource
private JavaMailSender javaMailSender;
//读取yml文件中username的值并赋值给from
@Value("${spring.mail.username}")
private String from;
@GetMapping("sendEmail")
public String sendSimpleMail(@RequestParam(value = "emailReceiver") String emailReceiver) {
// 构建一个邮件对象
SimpleMailMessage message = new SimpleMailMessage();
// 设置邮件发送者
message.setFrom(from);
// 设置邮件接收者
message.setTo(emailReceiver);
// 设置邮件的主题
message.setSubject("登录验证码");
// 设置邮件的正文
Random random = new Random();
StringBuilder code = new StringBuilder();
for (int i = 0; i < 6; i++) {
int r = random.nextInt(10);
code.append(r);
}
String text = "您的验证码为:" + code + ",请勿泄露给他人。";
System.out.println("验证码:"+code);
message.setText(text);
// 发送邮件
try {
javaMailSender.send(message);
return "发送成功";
} catch (MailException e) {
e.printStackTrace();
}
return "发送失败";
}
}
postman中发送请求
成功!!!!