邮件发送问题

2023-12-27 10:47:31

该文章是针对于后端是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邮箱的授权码:

  1. 访问QQ邮箱的官方网站(https://mail.qq.com/)并登录你的账号。

  2. 在登录成功后,点击页面右上角的设置图标(齿轮形状),然后选择“设置”选项。

  3. 在设置页面中,选择“账户”选项卡。

  4. 在账户选项卡下,你会看到“POP3/SMTP服务”部分,点击“开启”按钮。

  5. 系统会要求你重新登录以确认身份。

  6. 在重新登录成功后,你将获得一个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;
}

注意:实现的原理是通过自己给自己发送自定义生成的随机五位数,来模拟验证码的实现

功能描述:点击发送验证码,发送到自己邮箱之后,在前端通过控制台打印或者弹出消息框都阔以。

以上就是对于模拟发送验证码功能的实现!!!

文章来源:https://blog.csdn.net/m0_66318917/article/details/135190722
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。