邮件发送问题

该文章是针对于后端是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;
}

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

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

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

  • 35
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值