打开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 {@Autowiredprivate JavaMailSender javaMailSender;@GetMappingpublic 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 {@Autowiredprivate 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)
成功接收