打开QQ邮箱pop3请求服务:(按照QQ邮箱引导操作)
导入依赖(不是maven项目就自己添加jar包):
<!-- 邮件发送-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>3.2.1</version>
</dependency>
application.properties配置:
注:需要yml的,推荐转换工具或者下载idea插件yamls
yml,properties互转工具:yaml和proper互转工具
#邮箱配置
spring.mail.host=smtp.qq.com
spring.mail.port=465
spring.mail.username=邮箱地址
spring.mail.password=授权码
spring.mail.test-connection=true
spring.mail.properties.mail.smtp.ssl.enable=true
Controller层:
注:我使用的是自己静态验证码,就是为了一步一步来更加清晰,首先是要实现成功发送邮件,
后期大家自己加随机数做动态验证码替换静态验证码就好了,可以使用存入数据库或者redius。
package com.example.tianyidemo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/mail")
@RestController
public class MailDemoController {
@Autowired
private JavaMailSender javaMailSender;
@GetMapping
public String senderMail() {
SimpleMailMessage message = new SimpleMailMessage();
// 发件人 你的邮箱
message.setFrom("1330141297@qq.com");
// 接收人 接收者邮箱
message.setTo(new String[]{"1416655407@qq.com"});
//邮件标题
message.setSubject("天易游戏论坛:");
//邮件内容
message.setText("尊敬的用户:你好,欢迎使用天易游戏论坛,您的注册验证码为:678253");
javaMailSender.send(message);
return "success";
}
}
EmailService层:
package com.example.tianyidemo.service;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
/**
* 发送邮件
*
* @param to 收件人邮箱
* @param subject 邮件主题
* @param content 邮件内容
*/
public void sendMail(String to, String subject, String content) throws MessagingException {
// 创建邮件消息
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
// 发送邮件
mailSender.send(message);
}
}
实体类:(不知道有没有用,忘记了,要是报错就加上)
@Data
public class Mail {
public String email;
public String username;
public String password;
}
前端测试:(请注意oken的路径拦截!如果没写token可以不用管,也不用请求头添加token)
成功接收