尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

springboot集成qq邮箱发送邮件

springboot集成qq邮箱发送邮件
📅 发布时间:2026/6/21 17:10:38

引入依赖:

<!-- JavaMail API -->
<dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.6.2</version>
</dependency>
<!-- JavaMail实现 -->
<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version>
</dependency>

工具类:

package com.woniu.controller;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;public class QQMailSender {// QQ邮箱SMTP服务器地址private static final String SMTP_HOST = "smtp.qq.com";// 端口号,SSL加密方式为465private static final String SMTP_PORT = "465";private String senderEmail;   // 发送者邮箱地址private String authCode;      // QQ邮箱授权码(不是登录密码)/*** 构造方法* @param senderEmail 发送者QQ邮箱* @param authCode 邮箱授权码*/public QQMailSender(String senderEmail, String authCode) {this.senderEmail = senderEmail;this.authCode = authCode;}/*** 发送邮件* @param receiver 收件人邮箱* @param subject 邮件主题* @param content 邮件内容* @return 发送成功返回true,否则返回false*/public boolean sendMail(String receiver, String subject, String content) {// 1. 配置邮件服务器属性Properties props = new Properties();props.put("mail.smtp.host", SMTP_HOST);         // SMTP服务器地址props.put("mail.smtp.port", SMTP_PORT);         // 端口号props.put("mail.smtp.auth", "true");            // 需要身份验证props.put("mail.smtp.ssl.enable", "true");      // 启用SSL加密props.put("mail.transport.protocol", "smtp");   // 协议类型// 2. 创建会话对象,设置身份验证Session session = Session.getInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(senderEmail, authCode);}});session.setDebug(false);  // 调试模式,true会输出详细发送日志try {// 3. 创建邮件消息MimeMessage message = new MimeMessage(session);// 设置发件人message.setFrom(new InternetAddress(senderEmail));// 设置收件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));// 设置邮件主题message.setSubject(subject, "UTF-8");  // 解决中文乱码// 设置邮件内容message.setText(content, "UTF-8");     // 解决中文乱码// 4. 发送邮件Transport.send(message);System.out.println("邮件发送成功!");return true;} catch (MessagingException e) {System.err.println("邮件发送失败:" + e.getMessage());e.printStackTrace();return false;}}/*** 测试方法*/public static void main(String[] args) {// 替换为你的QQ邮箱和授权码String senderEmail = "your_qq@qq.com";String authCode = "your_auth_code";// 创建发送者实例QQMailSender mailSender = new QQMailSender(senderEmail, authCode);// 发送测试邮件boolean result = mailSender.sendMail("recipient@example.com",  // 收件人邮箱"这是一封测试邮件",        // 邮件主题"你好,这是通过Java程序发送的QQ邮件测试!"  // 邮件内容);if (result) {System.out.println("测试邮件发送成功");} else {System.out.println("测试邮件发送失败");}}
}

封装之后的代码:

前提:qq授权码已经在本地环境变量配置好了,使用的是spingboot项目

yaml配置:

spring:mail:# QQ邮箱SMTP服务器地址host: smtp.qq.com# SMTP服务器端口(SSL加密方式)port: 465# 发送者QQ邮箱账号(替换为你的QQ邮箱)username: your_qq@qq.com# QQ邮箱授权码(不是登录密码,需要在QQ邮箱设置中获取)password: ${QQ_SMTP_PASSWORD}

配置类:

package com.woniu.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;@Component // 加入Spring容器管理
public class QQEmailSender {// QQ邮箱SMTP服务器地址private static final String SMTP_HOST = "smtp.qq.com";// SMTP端口,QQ邮箱为465private static final String SMTP_PORT = "465";@Value("${spring.mail.username}") // 从配置文件获取用户名private String username; // 发件人邮箱@Value("${spring.mail.password}")private String password; // 发件人邮箱授权码// 移除自定义构造方法,使用默认构造方法让Spring可以实例化public QQEmailSender () {}/*** 发送邮件** @param to      收件人邮箱* @param subject 邮件主题* @param content 邮件内容* @return 是否发送成功*/public boolean sendEmail (String to, String subject, String content) {// 配置邮件服务器属性Properties props = new Properties();props.put("mail.smtp.host", SMTP_HOST);props.put("mail.smtp.port", SMTP_PORT);props.put("mail.smtp.auth", "true");props.put("mail.smtp.ssl.enable", "true"); // 启用SSL加密props.put("mail.transport.protocol", "smtp");// 创建会话Session session = Session.getInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication () {// 此处的username和password必须是非空的return new PasswordAuthentication(username, password);}});try {// 创建邮件消息Message message = new MimeMessage(session);message.setFrom(new InternetAddress(username));message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));message.setSubject(subject);message.setText(content);// 发送邮件Transport.send(message);System.out.println("邮件发送成功!!!");return true;} catch (MessagingException e) {System.err.println("邮件发送失败: " + e.getMessage());e.printStackTrace();return false;}}
}

测试:

package com.woniu.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;/*** @Author: 王思莹* @Description:* @DateTime: 2025/11/11 9:46* @Component: 成都蜗牛学苑*/// 项目启动时自动执行测试
@Component
public class EmailTest implements CommandLineRunner {@Autowiredprivate QQEmailSender qqEmailSender; // 从Spring容器注入@Overridepublic void run(String... args) throws Exception {// 发送测试邮件qqEmailSender.sendEmail("to_qq@qq.com",  // 收件人邮箱"测试邮件",                // 主题"这是一封通过Java程序发送的测试邮件!"  // 内容);}
}

相关新闻

  • CentOS安装JAVA环境
  • 第11周 预习、实验与作业:流与文件
  • 2025年衡水出租救护车公司权威推荐榜单:长途救护车出租/跨省救护车出租/市内救护车出租服务公司精选

最新新闻

  • UE Viewer:解锁虚幻引擎资源查看的10个实用技巧 [特殊字符]
  • 基于LPC4357双核MCU的互联网收音机:AMP架构与任务隔离实战
  • 如何用QuickCut高效处理日常视频:从下载到剪辑的全流程实战
  • SteamAutoCrack:3分钟解决Steam游戏离线运行难题的完整方案
  • MoE模型性能关键:专家网络与训练稳定性远胜路由算法
  • 2026 年泸州市厨卫屋顶地下室防水修缮三家横向测评:吉修匠 99.8 分五星榜首 - 吉修匠

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号