1. Necesitamos iniciar sesión en el buzón para abrir el código de autorización del buzón
2. Entonces necesitas pom para introducir spring-boot-starter-mail
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.6.4</version>
</dependency>
Necesita agregar el archivo de configuración 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 aquí se especifica el puerto 465, este puerto no entra en conflicto con el puerto de servicio del proyecto. El protocolo de envío de correo debe ser smtps, si no especifica enviar correo, se reportará un error, por lo que debe especificar el protocolo y configurarlo como smtps
código lógico
Después de introducir el spring-boot-starter-mail del pom anterior, puede usarlo
JavaMailSender es proporcionado por el paquete de correo
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);
}
}
Luego puede llamar al EmailService encapsulado arriba en su código comercial
@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(), "操作成功");
}
Eso es todo para el proceso, no debería haber ningún problema, hazlo.