该文章是针对于后端是SpringBoot实现的,实现了通过发送QQ邮箱实现验证码等功能
项目运行环境:jdk1.8
springBoot版本号2.7.17
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.17</version> <relativePath/> <!-- lookup parent from repository --> </parent>
? ? ? ?1.导入maven依赖
添加依赖:首先,在你的项目中添加JavaMail依赖。例如,如果你使用Maven构建项目,可以在pom.xml
文件中添加以下依赖:
<!-- JavaMail --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2.配置application.yml文件
? ? spring.mail:
? ? ? port: 25
? ? ? host: smtp.qq.com
? ? ? username: 265****476@qq.com ?//邮箱地址
? ? ? password: qmpxtcbefntreahb?// qq邮箱授权密码
? ? ? test-connection: false
? ? ? default-encoding: UTF-8
? ? ? properties:
? ? ? ? mail:
? ? ? ? ? debug: false
? ? ? ? ? smtp:
? ? ? ? ? ? timeout: 5000
? ? ? ? ? ? ssl:
? ? ? ? ? ? ? enable: false
? ? ? ? ? ? auth: true
? ? # ? ? ? ?starttls:
? ? # ? ? ? ? ?enable: true
? ? # ? ? ? ? ?required: true
注意:对于上述qq邮箱授权密码,需要通过自己获取,失败会报错,如下:
javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to login. More information in 帮助系统 报错信息为 本地邮箱密码登录认证失败
解决方案:
你可以按照以下步骤获取QQ邮箱的授权码:
访问QQ邮箱的官方网站(https://mail.qq.com/)并登录你的账号。
在登录成功后,点击页面右上角的设置图标(齿轮形状),然后选择“设置”选项。
在设置页面中,选择“账户”选项卡。
在账户选项卡下,你会看到“POP3/SMTP服务”部分,点击“开启”按钮。
系统会要求你重新登录以确认身份。
在重新登录成功后,你将获得一个16位的授权码。复制该授权码。
3. 创建邮件发送服务类:创建一个邮件发送服务类,注入JavaMailSender
对象,并编写发送邮件的方法。例如,可以创建一个名为EmailService
的类:
javaCopy Codeimport org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
? ? @Autowired
? ? private JavaMailSender javaMailSender;
? ? public void sendEmail(String to, String subject, String body) {
? ? ? ? SimpleMailMessage message = new SimpleMailMessage();
? ? ? ? message.setTo(to);
? ? ? ? message.setSubject(subject);
? ? ? ? message.setText(body);
? ? ? ? javaMailSender.send(message);
? ? }
}
4. controller层 (用来接收请求)
/** * 发送验证码 * @param to * @param subject * @return */ @GetMapping("sendVerCode") public String sendVerCode (String to,String subject){ Random random = new Random(); //随机生成5位数(生成验证码的规则) int randomNumber = random.nextInt(90000) + 10000; String randomNum = Integer.toString(randomNumber); userService.sentVerCode("265****476@qq.com",to,subject,randomNum); return randomNum; }
注意:实现的原理是通过自己给自己发送自定义生成的随机五位数,来模拟验证码的实现
功能描述:点击发送验证码,发送到自己邮箱之后,在前端通过控制台打印或者弹出消息框都阔以。
以上就是对于模拟发送验证码功能的实现!!!