Springboot se da cuenta de la función de enviar el código de verificación de correo electrónico en el applet

Para obtener más detalles, visite mi blog: Springboot implementa la función de enviar el código de verificación de correo electrónico en el applet

Springboot implementa verificación de correo electrónico para applets

1. Elementos de configuración

  1. Configurar archivos pom e introducir dependencia en el envío de correos electrónicos

Agregue en el archivo pom:

<!--邮件发送核心包-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

  1. Modifique el archivo de configuración application.yml, aquí tome el buzón QQ como ejemplo

Yo uso el método yml aquí, por supuesto, también puedes usar el método de propiedades para escribir

#邮件发送配置
spring:
  mail:
    default-encoding: UTF-8
    host: smtp.qq.com
    username: 你的邮箱
    password: 邮箱授权码
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

El código de autorización por correo electrónico se puede obtener de la siguiente manera:

Abra la página del buzón QQ → Configuración → Cuenta → POP3 / IMAP / SMTP / Exchange / CardDAV / CalDAV service → active el servicio POP3 / SMTP, y luego podrá ver el código de autorización

[Falló la transferencia de la imagen de la cadena externa, el sitio de origen puede tener un mecanismo de cadena antirrobo, se recomienda guardar la imagen y cargarla directamente (img-k05s3Fon-1578461968057) (https://i.loli.net/2019/03/16/5c8c8a7252fef.png )]

Segundo, escriba mailService y mailServiceImpl

La capa de servicio de correo y la capa de implementación de la interfaz de servicio de correo

$ {spring.mail.username} es una propiedad configurada en yml. Aquí hay un método. El primero es enviar correo regular y el segundo es enviar correo con archivos adjuntos.

  1. Capa de servicio de correo (IMailService)
public interface IMailService {

    //发送普通邮件
    void sendSimpleMail(String to,String title,String content);

    //发送带有附件的邮件
    void sendAttachmentsMail(String to, String title, String content, List<File> fileList);
}
  1. Capa de implementación de la interfaz del servicio de correo (MailServiceImpl)
@Service
public class MailServiceImpl implements IMailService {

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

    @Resource
    private JavaMailSender mailSender;

    Logger logger = LoggerFactory.getLogger(this.getClass());

    //发送普通邮件
    @Override
    public void sendSimpleMail(String to, String title, String content) {

        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        message.setSubject(title);
        message.setText(content);
        mailSender.send(message);
        logger.info("邮件发送成功");

    }

    //发送带有附件的邮件
    @Override
    public void sendAttachmentsMail(String to, String title, String content, List<File> fileList) {

        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(title);
            helper.setText(content);
            String fileName = null;
            for (File file:fileList) {
                fileName = MimeUtility.encodeText(file.getName(), "GB2312", "B");
                helper.addAttachment(fileName, file);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        mailSender.send(message);
        logger.info("邮件发送成功");

    }
}

Tercero, escribe el controlador

Capa de control de correo electrónico

//获取邮箱验证的验证码
    @RequestMapping("/getCheckCode")
    public JsonResult getCheckCode(HttpServletRequest request) {
        //获取微信小程序get的参数值并打印
        String userEmail = request.getParameter("userEmail");
        user = userService.queryUserByUserEmail(userEmail);
        if (null == user) {
            return new JsonResult(JsonResponseStatus.EMPTY.getCode(), JsonResponseStatus.EMPTY.getMsg());
        }else{
            String checkCode = String.valueOf(new Random().nextInt(899999) + 100000);
            String message = "您的注册验证码为:"+checkCode;
            try {
                mailService.sendSimpleMail(userEmail, "注册验证码", message);
            }catch (Exception e){
                return new JsonResult(JsonResponseStatus.EMPTY.getCode(), JsonResponseStatus.EMPTY.getMsg());
            }
            return new JsonResult(JsonResponseStatus.SUCCESS.getCode(), JsonResponseStatus.SUCCESS.getMsg(),checkCode);
        }
    }

Adjunte el código de la capa de control que se puede usar en la página web:

@Controller
public class MailController {
    
    @Resource
    private IMailService mailService;

    @RequestMapping("getCheckCode")
    @ResponseBody
    public String getCheckCode(String email){
        String checkCode = String.valueOf(new Random().nextInt(899999) + 100000);
        String message = "您的注册验证码为:"+checkCode;
        try {
            mailService.sendSimpleMail(email, "注册验证码", message);
        }catch (Exception e){
            return "";
        }
        return checkCode;
    }
}

Cuarto, escriba una pequeña página de verificación de correo electrónico del programa

<!--pages/getCheckCode/getCheckCode.wxml-->
<form bindsubmit="getCheckCode">
  <view class="form-list">
    <view class="form-item">
      <view class="form-item-hd">邮箱</view>
      <view class="form-item-bd">
        <input type="email" name="userEmail" value="{{userEmail}}" placeholder="请输入邮箱" maxlength="25" />
      </view>
    </view>
  </view>
  <!--按钮-->
  <button formType="submit" class="edit-btn">获取验证码</button>
</form>

<form bindsubmit="toPasswordReset">
  <view class="form-list">
    <view class="form-item">
      <view class="form-item-hd">验证码</view>
      <view class="form-item-bd">
        <input type="text" name="checkCode" value="{{checkCode}}" placeholder="请输入验证码" maxlength="20" />
      </view>
    </view>
  </view>
  <button formType="submit" class="edit-btn">进行验证</button>
</form>

Cinco, prueba

[Falló la transferencia de la imagen de la cadena externa, el sitio de origen puede tener un mecanismo de cadena antirrobo, se recomienda guardar la imagen y cargarla directamente (img-0JFwnvF6-1578461968058) (https://i.loli.net/2019/03/16/5c8cc99015151.png )]

[Falló la transferencia de la imagen de la cadena externa, el sitio de origen puede tener un mecanismo de cadena antirrobo, se recomienda guardar la imagen y cargarla directamente (img-jFDlrDTs-1578461968059) (https://i.loli.net/2019/03/16/5c8cc9a7008c2.png )]

Ok, lo compartiré aquí. Si tiene alguna pregunta, deje un comentario a continuación ...

Publicado 120 artículos originales · elogiado 201 · 230,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/wugenqiang/article/details/88604632
Recomendado
Clasificación