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

springboot集成qq邮箱发送邮件

引入依赖:

<!-- 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程序发送的测试邮件!"  // 内容);}
}
http://www.jsqmd.com/news/37239/

相关文章:

  • R方分数
  • 银河麒麟KylinV10操作系统清理操作系统中的缓存drop_caches
  • CentOS安装JAVA环境
  • 转载,也要有转载的道德吧
  • 第11周 预习、实验与作业:流与文件
  • 2025年机场无障碍盲道砖生产厂家权威推荐榜单:火车站盲道砖/圆点盲道砖/高铁站盲道砖源头厂家精选
  • C语言知识库 -- 完整C语言笔记目录,并且附带纯C项目源码《小鹅说 C 语言》
  • 如何一键检测并修改公众号文章的错字和敏感词?
  • Day34(4)-F:\硕士阶段\Java\课程资料\2025最新版JavaWeb+AI\资料\02. 前端Web基础(JS+Vue+Ajax)\资料\03. 基础代码\JS-Vue-01~12
  • Linux内核进程管理子系统有什么第六十六回 —— 进程主结构详解(62) - 实践
  • HTML 01 【基础语法学习】 - 详解
  • 2025年衡水出租救护车公司权威推荐榜单:长途救护车出租/跨省救护车出租/市内救护车出租服务公司精选
  • 2025年浓硫酸订做厂家权威推荐榜单:液体硝酸/工业级盐酸/工业级盐酸源头厂家精选
  • vscode c语言 颜色设置
  • 2025年乌鲁木齐黄金回收权威推荐榜单:黄金上门回收/黄金首饰加工/打金店源头商家精选
  • 2025年华美月饼厂家权威推荐榜单:华美冰皮月饼/榴莲冰皮月饼/五仁月饼源头厂家及品牌代理精选
  • 嵌入式系统的LCD多级菜单显示实现
  • 转让发明专利
  • 2025年列管冷凝器制造企业权威推荐榜单:壳管式冷凝器/石墨冷凝器/蒸发式冷凝器源头厂家精选
  • MySQL主从复制延迟诊断与GTID故障切换看我这篇就行了!
  • 2025研发效能制品库选型新思维:构建安全、高效与国产化兼容的研运基座
  • 第六届机械工程、智能制造与自动化技术国际学术会议 (MEMAT 2025)
  • Windows 批处理bat放开始菜单栏、任务栏
  • 第五届算法、高性能计算与人工智能国际学术会议(AHPCAI 2025)
  • 2025年郑州除甲醛公司权威推荐榜单:氧道净醛水漆/新房装修除甲醛/甲醛净化源头服务商精选
  • 分享一个比SQLHC还要厉害的脚本
  • 2025 主流 BPM 厂商全解析:功能、优势与应用场景
  • .在线调试快递
  • 软件未来预测的准确性与代码简洁之道
  • 2025年石英砂生产线厂家权威推荐榜单:硅砂生产线/光伏砂生产线/玻璃砂生产线源头厂家精选