Spring Boot 通過 spring-boot-starter-mail 自動裝配 JavaMailSender。配置 application.yml:
spring:
mail:
host: smtp.exmail.qq.com
port: 465
username: noreply@example.com
password: xxx
protocol: smtps
properties:
mail:
smtp:
ssl:
enable: true
auth: true
timeout: 5000
發送簡單郵件:
@Autowired JavaMailSender mailSender;
public void sendSimple(String to, String subject, String text) {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom("noreply@example.com");
msg.setTo(to);
msg.setSubject(subject);
msg.setText(text);
mailSender.send(msg);
}
發送 HTML 郵件 (Thymeleaf 模板):
@Autowired TemplateEngine templateEngine;
public void sendHtml(String to, String subject, Context ctx) {
MimeMessage msg = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true, "UTF-8");
helper.setFrom("noreply@example.com");
helper.setTo(to);
helper.setSubject(subject);
String html = templateEngine.process("mail/welcome", ctx);
helper.setText(html, true);
mailSender.send(msg);
}
異步發送加 @Async 需啟用 @EnableAsync 配置線程池。大量發送建議接入專業郵件服務 (SendGrid, Amazon SES) 或使用消息隊列削峰。