blob: 492ade02777e61c8d855f7261c3ea10279cd7ce5 [file] [log] [blame]
21301050c519f712025-06-04 17:03:04 +08001package com.pt5.pthouduan.service;
2
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.mail.SimpleMailMessage;
5import org.springframework.mail.javamail.JavaMailSender;
6import org.springframework.stereotype.Service;
7
8import java.util.HashMap;
9import java.util.Map;
10import java.util.Random;
11
12@Service
13public class EmailService {
14
15 @Autowired
16 private JavaMailSender mailSender;
17
18 // 存储邮箱和验证码的映射(实际项目中应该用Redis等缓存)
19 private final Map<String, String> emailCodeMap = new HashMap<>();
20
21 /**
22 * 发送验证码到指定邮箱
23 * @param email 目标邮箱
24 * @return 是否发送成功
25 */
26 public boolean sendVerificationCode(String email) {
27 // 生成6位随机验证码
28 String code = generateRandomCode(6);
29
30 // 存储验证码(5分钟有效)
31 emailCodeMap.put(email, code);
32
33 try {
34 SimpleMailMessage message = new SimpleMailMessage();
35 message.setFrom("zhutai940@163.com"); // 发件人
36 message.setTo(email); // 收件人
37 message.setSubject("您的注册验证码"); // 主题
38 message.setText("您的验证码是: " + code + ",5分钟内有效。"); // 内容
39
40 mailSender.send(message);
41 return true;
42 } catch (Exception e) {
43 e.printStackTrace();
44 return false;
45 }
46 }
47
48 /**
49 * 验证邮箱和验证码是否匹配
50 * @param email 邮箱
51 * @param code 验证码
52 * @return 是否验证通过
53 */
54 public boolean verifyCode(String email, String code) {
55 String storedCode = emailCodeMap.get(email);
56 return storedCode != null && storedCode.equals(code);
57 }
58
59 /**
60 * 生成随机验证码
61 * @param length 验证码长度
62 * @return 验证码字符串
63 */
64 private String generateRandomCode(int length) {
65 String numbers = "0123456789";
66 Random random = new Random();
67 StringBuilder sb = new StringBuilder();
68
69 for (int i = 0; i < length; i++) {
70 sb.append(numbers.charAt(random.nextInt(numbers.length())));
71 }
72
73 return sb.toString();
74 }
75}