[Code de vérification des e-mails] springboot utilise le service de boîte aux lettres pour envoyer le code de vérification, qui est configuré sur le port du serveur Aliyun

1. Nous devons nous connecter à la boîte aux lettres pour ouvrir le code d'autorisation de la boîte aux lettres

insérez la description de l'image ici

2. Ensuite, vous avez besoin de pom pour introduire spring-boot-starter-mail

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
        <version>2.6.4</version>
    </dependency>

Besoin d'ajouter dans le fichier de configuration application.properties

<!-- 邮箱验证 -->
#163邮箱
spring.mail.host=smtp.163.com
#这里配置你的邮箱
spring.mail.username=XXX@163.com
spring.mail.password=开启smtp时候的授权码
spring.mail.default-encoding=utf-8
spring.mail.port=465
spring.mail.protocol=smtps
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

Si le port 465 est spécifié ici, ce port n'entre pas en conflit avec le port de service du projet. Le protocole d'envoi de courrier doit être smtps. Si vous ne spécifiez pas d'envoyer un courrier, une erreur sera signalée, vous devez donc spécifier le protocole et le configurer comme smtps

code logique

Après l'introduction du spring-boot-starter-mail du pom ci-dessus, vous pouvez l'utiliser

JavaMailSender est fourni par le package de messagerie

package com.qiyuan.qyframe.base.service;

import com.qiyuan.qyframe.base.common.BusiException;
import com.qiyuan.qyframe.base.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.Random;

@Slf4j
@Service
public class EmailService {
    
    

    @Value("${spring.mail.host}")
    private String host;
    @Value("${spring.mail.username}")
    private String username;
    @Value("${spring.mail.password}")
    private String password;

    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private JavaMailSender sender;

   
    public void sendEmailCode(String email) {
    
    
        if (StringUtils.isBlank(email)) {
    
    
            throw new BusiException("请输入正确的邮箱账号");
        }
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(username);
        message.setTo(email);
        message.setSubject("验证码");
        String verificationCode = String.valueOf(new Random().nextInt(899999) + 100000);
        //System.out.println(verificationCode);
        message.setText("尊敬的用户你好,你所收到的验证码: " + verificationCode);

        sender.send(message);
        //将验证码放入Redis中,并定时五分钟,五分钟后删除
        redisUtil.set(email, verificationCode, 5 * 60);

    }
}

Ensuite, vous pouvez appeler le EmailService encapsulé ci-dessus dans votre code d'entreprise

	@AnonymousAccess
    @RequestMapping(value = "/emailCode", method = RequestMethod.POST)
    public ResponseData emailCode(String email) {
    
    
        String errMsg = "";
        try {
    
    
            emailService.sendEmailCode(email);

        } catch (BusiException e) {
    
    
            errMsg = e.getMessage();
            log.error("PhoneCodeController-emailCode occur BusiException", e);
            return ResponseDataUtil.buildSuccess(ResultEnums.ERROR.getCode(), errMsg);
        } catch (Exception e) {
    
    
            //异常信息
            errMsg = "系统错误";
            log.error("PhoneCodeController-emailCode occur Exception", e);
            return ResponseDataUtil.buildSuccess(ResultEnums.ERROR.getCode(), errMsg);
        }
        return ResponseDataUtil.buildSuccess(ResultEnums.SUCCESS.getCode(), "操作成功");

    }

C'est à peu près tout pour le processus, il ne devrait y avoir aucun problème, faites-le

Je suppose que tu aimes

Origine blog.csdn.net/qq_39236283/article/details/126487468
conseillé
Classement