当前位置: 首页 > news >正文

springboot--使用QQ邮箱

1️⃣ 前置条件

  1. QQ邮箱准备

    • 需要有一个 QQ 邮箱账号。

    • 登录邮箱,开启 SMTP 服务

      1. 进入邮箱 → 设置 → 账户 → 开启 “SMTP 服务”。

      2. 获取授权码(授权码即 SMTP 密码,用于第三方客户端登录,不是邮箱登录密码)。

    • SMTP 服务器信息:

      参数
      SMTP服务器smtp.qq.com
      端口465(SSL) / 587(TLS)
      是否需要身份验证
  2. 依赖

    • Spring Boot 需要引入邮件依赖:

          <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.ymlapplication.properties 中配置:

application.yml 示例

spring:mail:# 下面这个是QQ邮箱host , 企业邮箱 : smtp.exmail.qq.comhost: smtp.qq.com#port  这个是固定的port: 465# 你的QQ邮箱username: 你的qq邮箱地址# 进入邮箱配置后得到的授权码password: 你获取到的授权码test-connection: trueproperties:mail:smtp:ssl:enable: true

说明

配置项	                                     作用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 发送简单文本邮件

@RequestMapping("/mail")
@RestController
public class MailDemoController {@Autowiredprivate 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 邮件

@RequestMapping("/mail")
@RestController
public class MailDemoController {@Autowiredprivate 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 messagehelper.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 表示HTMLjavaMailSender.send(message);}
}

3.3 发送带附件邮件

@RequestMapping("/mail")
@RestController
public class MailDemoController {@Autowiredprivate 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 messagehelper.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️⃣ 常见问题与注意事项

  1. 授权码必须使用 SMTP 授权码

    • QQ 邮箱登录密码无法直接用于 SMTP。

  2. 端口问题

    • 465 对应 SSL

    • 587 对应 TLS

    • 必须与配置一致,否则会报连接错误。

  3. 发送邮箱必须与 username 一致

    • 否则可能报 “550 Unauthorized” 错误。

  4. 防火墙与网络

    • 某些服务器会阻止 465/587 端口,需要确认防火墙开放。

  5. 发送大量邮件注意

    • QQ 邮箱对发送频率有一定限制(防止垃圾邮件)。

http://www.lryc.cn/news/625957.html

相关文章:

  • 网络聚合链路与软件网桥配置指南
  • 源代码安装部署lamp
  • 云端赋能,智慧运维:分布式光伏电站一体化监控平台研究
  • “R语言+遥感”的水环境综合评价方法实践技术应用
  • 微服务-07.微服务拆分-微服务项目结构说明
  • 云电脑 vs 传统PC:全面对比3A游戏与AI训练的成本与性能
  • 基于STM32+NBIOT设计的宿舍安防控制系统_264
  • Java NIO (New I/O) 深度解析
  • 深入理解Prompt构建与工程技巧:API高效实践指南
  • webpack》》Plugin 原理
  • Spring Ai Prompts
  • webrtc弱网-GoogCcNetworkController类源码分析与算法原理
  • Jenkins服务器SSH公钥配置步骤
  • 哈希:两数之和
  • 磁盘镜像格式RAW、QCOW2、VHD、VMDK的核心区别
  • Android -登录注册实践技术总结
  • Android SystemServer 中 Service 的创建和启动方式
  • 代码随想录Day56:图论(冗余连接、冗余连接II)
  • CLIK-Diffusion:用于牙齿矫正的临床知识感知扩散模型|文献速递-深度学习人工智能医疗图像
  • 心路历程-启动流程的概念
  • 如何让你的知识分享更有说服力?
  • RNN如何将文本压缩为256维向量
  • AC内容审计技术
  • 单一职责原则(SRP)深度解析
  • django生成迁移文件,执行生成到数据库
  • CNN-LSTM-Attention、CNN-LSTM、LSTM三模型多变量时序光伏功率预测
  • 开源 GIS 服务器搭建:GeoServer 在 Linux 系统上的部署教程
  • Scikit-learn通关秘籍:从鸢尾花分类到房价预测
  • Vim笔记:缩进
  • 从一个ctf题中学到的多种php disable_functions bypass 姿势