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 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 verifyEmail(String email, String emailCode) { String verify = redisService.get(emailCode).toString(); if (verify.equals(email)){ return R.ok("验证通过"); } return R.fail("验证失败,请重试"); } }