79 lines
2.6 KiB
Java
79 lines
2.6 KiB
Java
|
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("验证失败,请重试");
|
||
|
}
|
||
|
}
|