|
|
|
|
@ -0,0 +1,83 @@
|
|
|
|
|
package com.student.mathquiz.view;
|
|
|
|
|
|
|
|
|
|
import jakarta.mail.*;
|
|
|
|
|
import jakarta.mail.internet.InternetAddress;
|
|
|
|
|
import jakarta.mail.internet.MimeMessage;
|
|
|
|
|
import java.util.Properties;
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
|
|
public class EmailService {
|
|
|
|
|
|
|
|
|
|
// ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
|
|
|
|
|
// ★ 把这里换成你自己的发件人邮箱和授权码! ★
|
|
|
|
|
// ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
|
|
|
|
|
private static final String SENDER_EMAIL = "3048494657@qq.com";
|
|
|
|
|
private static final String SENDER_AUTHORIZATION_CODE = "ymnbezwjzrnfdgih";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生成一个6位的随机验证码.
|
|
|
|
|
* @return 6位数字字符串
|
|
|
|
|
*/
|
|
|
|
|
public static String generateVerificationCode() {
|
|
|
|
|
Random random = new Random();
|
|
|
|
|
int code = 100000 + random.nextInt(900000); // 保证是6位数
|
|
|
|
|
return String.valueOf(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送验证码邮件.
|
|
|
|
|
* @param recipientEmail 收件人邮箱
|
|
|
|
|
* @param code 要发送的验证码
|
|
|
|
|
* @return 发送成功返回 true, 否则返回 false
|
|
|
|
|
*/
|
|
|
|
|
public static boolean sendVerificationEmail(String recipientEmail, String code) {
|
|
|
|
|
// 1. 配置邮件服务器属性
|
|
|
|
|
Properties props = new Properties();
|
|
|
|
|
props.put("mail.smtp.host", "smtp.qq.com"); // QQ邮箱的SMTP服务器地址
|
|
|
|
|
props.put("mail.smtp.port", "587"); // SMTP服务器端口 (使用TLS加密)
|
|
|
|
|
props.put("mail.smtp.auth", "true"); // 需要身份验证
|
|
|
|
|
props.put("mail.smtp.starttls.enable", "true"); // 启用TLS加密
|
|
|
|
|
|
|
|
|
|
// 2. 创建认证器,用于登录邮箱
|
|
|
|
|
Authenticator authenticator = new Authenticator() {
|
|
|
|
|
@Override
|
|
|
|
|
protected PasswordAuthentication getPasswordAuthentication() {
|
|
|
|
|
return new PasswordAuthentication(SENDER_EMAIL, SENDER_AUTHORIZATION_CODE);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 3. 获取邮件会话 Session
|
|
|
|
|
Session session = Session.getInstance(props, authenticator);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 4. 创建邮件消息 MimeMessage
|
|
|
|
|
MimeMessage message = new MimeMessage(session);
|
|
|
|
|
// 设置发件人
|
|
|
|
|
message.setFrom(new InternetAddress(SENDER_EMAIL));
|
|
|
|
|
// 设置收件人
|
|
|
|
|
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientEmail));
|
|
|
|
|
// 设置邮件主题
|
|
|
|
|
message.setSubject("【数学学习软件】您的注册验证码");
|
|
|
|
|
// 设置邮件正文内容
|
|
|
|
|
message.setText("尊敬的用户,您好!\n\n您的注册验证码是:" + code + "\n\n请在5分钟内完成注册。如果不是您本人操作,请忽略此邮件。\n\n(此为系统自动发送,请勿回复)");
|
|
|
|
|
|
|
|
|
|
// 5. 发送邮件!
|
|
|
|
|
Transport.send(message);
|
|
|
|
|
|
|
|
|
|
System.out.println("验证码邮件发送成功!");
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
} catch (MessagingException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
System.out.println("邮件发送失败!");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 你可以写一个临时的 main 方法来测试它!
|
|
|
|
|
/* public static void main(String[] args) {
|
|
|
|
|
String code = generateVerificationCode();
|
|
|
|
|
// ★★★ 把这里换成你自己的另一个邮箱来接收测试邮件 ★★★
|
|
|
|
|
sendVerificationEmail("lyqqqq1214@163.com", code);
|
|
|
|
|
}*/
|
|
|
|
|
}
|