CatchTheLettersBackend/src/main/java/com/example/catchTheLetters/service/impl/EmailServiceImpl.java

79 lines
2.6 KiB
Java
Raw Normal View History

2024-06-08 09:38:49 +00:00
package com.example.catchTheLetters.service.impl;
import com.example.catchTheLetters.service.EmailService;
import com.example.catchTheLetters.utils.R;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
public class EmailServiceImpl implements EmailService {
/**
* 注入邮件工具类
*/
@Resource
JavaMailSenderImpl javaMailSender;
String str = "^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$";
Pattern pattern = Pattern.compile(str);
@Resource
RedisServiceImpl redisService;
@Value("${spring.mail.username}")
private String sendMailer;
@Override
public R<String> sendEmail(String email) {
try {
if (!StringUtils.hasText(email)) {
return R.fail("邮箱为空");
}
Matcher m = pattern.matcher(email);
if (!m.matches()){
return R.fail("格式错误,请重试");
}
//生成邮箱验证码
String emailCode = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase().substring(3, 9);
//新建邮件对象
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true);
//邮件发信人
mimeMessageHelper.setFrom(sendMailer);
//邮件收信人
mimeMessageHelper.setTo(email);
//邮件内容
mimeMessageHelper.setText("你的验证码为:" + emailCode);
//邮件信息
mimeMessageHelper.setSentDate(new Date());
//发送邮件
javaMailSender.send(mimeMessageHelper.getMimeMessage());
//将验证码和注册邮箱存入redis
redisService.set(email,emailCode);
return R.ok( "发送成功");
}catch (Exception e){
e.printStackTrace();
return R.fail("邮箱异常,请重试");
}
}
@Override
public R<String> verifyEmail(String email, String emailCode) {
String verify = redisService.get(emailCode).toString();
if (verify.equals(email)){
return R.ok("验证通过");
}
return R.fail("验证失败,请重试");
}
}