必须添加spring-boot-starter-mail依赖并正确配置spring.mail参数,才能自动创建javamailsender bean;需用@autowired注入,支持纯文本和html邮件发送,且smtp配置缺一不可。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Spring Boot项目中用JavaMailSender发送邮件,必须先完成通义灵码可识别的标准化配置,否则生成的代码无法注入邮件发送器实例。
添加邮件依赖并启用自动配置
在pom.xml中添加spring-boot-starter-mail依赖,版本必须与当前Spring Boot主版本匹配,否则JavaMailSender Bean不会被自动创建。
这一步操作起来很简单,直接把以下XML块粘贴到<dependencies></dependencies>标签内即可:
application.yml中配置SMTP参数
配置项必须放在spring.mail命名空间下,且host、port、username、password四项缺一不可,否则JavaMailSender初始化时会抛出BeanCreationException。
以QQ邮箱为例(需提前开启SMTP服务并获取独立密码):
spring:
mail:
host: smtp.qq.com
port: 587
username: your_email@qq.com
password: 【此处填16位SMTP授权码,不是登录密码】
properties:
mail:
smtp:
auth: true
starttls:
enable: true
编写邮件发送Service类
使用@Autowired注入JavaMailSender是唯一可靠方式,手动new SimpleMailMessage会导致模板渲染失败或编码异常。
方法一:发送纯文本邮件
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
public void sendSimpleEmail(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
message.setFrom("your_email@qq.com");
javaMailSender.send(message);
}
}
方法二:发送带HTML内容的邮件
需要将SimpleMailMessage替换为MimeMessage,并通过MimeMessageHelper设置contentType为text/html;charset=UTF-8,否则中文会乱码。
public void sendHtmlEmail(String to, String subject, String htmlContent) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setTo(to);
helper.setSubject(subject);
helper.setFrom("your_email@qq.com");
helper.setText(htmlContent, true);
javaMailSender.send(mimeMessage);
}
在Controller中调用发送接口
第一步:定义REST端点接收邮件参数
@PostMapping("/send")
public ResponseEntity
try {
emailService.sendSimpleEmail(request.getTo(), request.getSubject(), request.getText());
return ResponseEntity.ok("邮件已发送");
} catch (Exception e) {
return ResponseEntity.status(500).body("发送失败:" + e.getMessage());
}
}
第二步:准备请求体示例(测试用)
{
"to": "receiver@example.com",
"subject": "测试邮件",
"text": "这是一封来自Spring Boot的测试邮件"
}
第三步:启动应用后用curl或Postman发起POST请求→验证控制台是否输出"邮件已发送"→检查收件箱是否收到邮件。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











