1️⃣ 前置条件
QQ邮箱准备
需要有一个 QQ 邮箱账号。
登录邮箱,开启 SMTP 服务:
进入邮箱 → 设置 → 账户 → 开启 "SMTP 服务"。
获取授权码(授权码即 SMTP 密码,用于第三方客户端登录,不是邮箱登录密码)。
SMTP 服务器信息:
参数 值 SMTP服务器 smtp.qq.com 端口 465(SSL) / 587(TLS) 是否需要身份验证 是 依赖
Spring Boot 需要引入邮件依赖:
XML<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-主要是这个--> <!--邮箱的jar--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> </dependencies>
2️⃣ 配置邮箱信息
在
application.yml
或application.properties
中配置:application.yml 示例
javaspring: mail: # 下面这个是QQ邮箱host , 企业邮箱 : smtp.exmail.qq.com host: smtp.qq.com #port 这个是固定的 port: 465 # 你的QQ邮箱 username: 你的qq邮箱地址 # 进入邮箱配置后得到的授权码 password: 你获取到的授权码 test-connection: true properties: mail: smtp: ssl: enable: true
说明
bash配置项 作用 spring.mail.host 邮件服务器地址 spring.mail.port SMTP 端口(SSL 465 / TLS 587) spring.mail.username 发件人邮箱账号 spring.mail.password SMTP 授权码 spring.mail.test-connection 启动时测试 SMTP 服务器连接 spring.mail.properties.mail.smtp.ssl.enable 开启 SSL 安全连接
3️⃣ 发送邮件示例
3.1 使用
JavaMailSender
发送简单文本邮件
java@RequestMapping("/mail") @RestController public class MailDemoController { @Autowired private JavaMailSender javaMailSender; //发送普通文本 @GetMapping("/txt") public String senderMail() { SimpleMailMessage message = new SimpleMailMessage(); // 发件人 你的邮箱 message.setFrom("xxx@qq.com"); // 接收人 接收者邮箱 message.setTo(new String[]{"xxx@qq.com"}); //邮件标题 message.setSubject("邮箱标题"); //邮件内容 message.setText("11"); javaMailSender.send(message); return "success"; } }
3.2 发送 HTML 邮件
java@RequestMapping("/mail") @RestController public class MailDemoController { @Autowired private JavaMailSender javaMailSender; //发送html @GetMapping("/html") public void sendHtmlMail() throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8"); //注意这里用的MimeMessageHelper helper并非MimeMessage message helper.setFrom("你的邮箱@qq.com"); //你要发送人的 helper.setTo(new String[]{"xxx@qq.com"}); //邮件标题 helper.setSubject("邮箱标题"); //发送的内容 String htmlContent = "<h1 style='color:blue'>欢迎使用QQ邮箱发送邮件</h1>" + "<p>这是一封 <b>HTML</b> 格式的邮件</p>" + "<a href='https://mail.qq.com'>点击跳转QQ邮箱</a>"; //htmlContent是上面定义的发送内容 helper.setText(htmlContent, true); // true 表示HTML javaMailSender.send(message); } }
3.3 发送带附件邮件
java@RequestMapping("/mail") @RestController public class MailDemoController { @Autowired private JavaMailSender javaMailSender; //发送附件(也就是文件) @GetMapping("/file") public void sendAttachmentsMail(String to, String subject, String content, String filePath) throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8"); //注意这里用的MimeMessageHelper helper并非MimeMessage message helper.setFrom("你的邮箱@qq.com"); //你要发送人的 helper.setTo(new String[]{"xxx@qq.com"}); //邮件标题 helper.setSubject("邮箱标题"); helper.setText(content, true); //Java 里创建一个 File 对象 File file = new File("文件路径"); //添加附件 helper.addAttachment(file.getName(), file); javaMailSender.send(message); } }
4️⃣ 常见问题与注意事项
授权码必须使用 SMTP 授权码
- QQ 邮箱登录密码无法直接用于 SMTP。
端口问题
465 对应 SSL
587 对应 TLS
必须与配置一致,否则会报连接错误。
发送邮箱必须与
username
一致
- 否则可能报 "550 Unauthorized" 错误。
防火墙与网络
- 某些服务器会阻止 465/587 端口,需要确认防火墙开放。
发送大量邮件注意
- QQ 邮箱对发送频率有一定限制(防止垃圾邮件)。
springboot--使用QQ邮箱
你我约定有三2025-08-21 11:13