MailUtil.java
package org.darkroomlibrary.utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import jakarta.annotation.Resource;
/**
* 邮件发送工具类
*/
@Slf4j
@Component
public class MailUtil {
@Resource
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
@Value("${spring.mail.password:}")
private String password;
/**
* 发送验证码
*/
public void sendVerificationCode(String to, String code) {
ensureMailConfigured();
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject("【暗室藏书】邮箱验证码");
message.setText("您的验证码是:" + code + ",有效期为5分钟,请勿泄露给他人。");
// 验证码发送失败必须抛出异常,调用方不应给用户"已发送"的假提示
mailSender.send(message);
log.info("验证码邮件发送成功: to={}", to);
}
public void sendSimpleOrThrow(String to, String subject, String content) {
ensureMailConfigured();
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
mailSender.send(message);
log.info("通知邮件发送成功: to={}, subject={}", to, subject);
}
private void ensureMailConfigured() {
if (!isMailConfigured()) {
throw new IllegalStateException("邮件服务未配置:请设置 MAIL_USERNAME 和 MAIL_PASSWORD");
}
}
private boolean isMailConfigured() {
return from != null && !from.trim().isEmpty()
&& password != null && !password.trim().isEmpty();
}
}