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

JavaMail 邮件发送实战:解决依赖与配置问题

开发中,邮件发送是一项十分实用的基础功能,不管是用户注册后的验证通知、系统异常的告警提醒,还是日常的信息推送,都能用到它。而对于刚接触 Java 开发的新手来说,实现邮件发送往往会卡在两个关键环节:一是 Maven 依赖的配置与加载,稍不注意就会出现 “程序包不存在” 的报错;二是邮件服务器的参数设置,比如授权码获取、SMTP 端口选择等,一个小细节出错就会导致邮件发送失败。

本文就以 QQ 邮箱为例,结合 Maven 项目结构,手把手带你完成从依赖配置、代码编写到测试运行的全流程,还会针对新手常遇到的依赖标红、发送无响应等问题给出解决方案,让你轻松掌握 Java 邮件发送的核心技能。

首先是开启qq邮箱的pop3服务,获取授权码

这样的目录,新增这个文件

package com.servlet.email; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; public class SendEmail { // 发送邮件的核心方法 public static void send(String toEmail, String subject, String content) { // 1. 邮箱服务器配置(QQ邮箱为例) String host = "smtp.qq.com"; String port = "587"; String fromEmail = "2474728161@qq.com"; // 替换为发件人QQ邮箱 String authCode = "*************"; // 替换为QQ邮箱SMTP授权码 // 2. 设置邮件属性 Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); // 协议 props.setProperty("mail.smtp.host", host); // 服务器 props.setProperty("mail.smtp.port", port); // 端口 props.setProperty("mail.smtp.auth", "true"); // 需要认证 props.setProperty("mail.smtp.starttls.enable", "true"); // 启用TLS加密 // 3. 创建认证器 Authenticator auth = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(fromEmail, authCode); } }; // 4. 获取会话 Session session = Session.getInstance(props, auth); session.setDebug(true); // 调试模式(可选) try { // 5. 创建邮件消息 MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(fromEmail)); // 发件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); // 收件人 message.setSubject(subject); // 主题 message.setText(content); // 内容 // 6. 发送邮件 Transport.send(message); System.out.println("邮件发送成功!"); } catch (MessagingException e) { System.err.println("邮件发送失败:" + e.getMessage()); e.printStackTrace(); } } // main方法测试 public static void main(String[] args) { // 测试发送(替换为实际收件人邮箱) send("6928537@qq.com", "测试邮件", "这是通过Java发送的测试内容"); } }

放这段代码在你的SendMail.java文件里面👆

我的邮箱改成你的邮箱,授权码就写qq邮箱里面开通服务给你的码

pom文件放入这段,放在dependencies里面,重载一下maven配置,SendMail就不会标红

右键运行

看控制台👇

看图形化界面,这是你发的

完成!

http://www.cnnetsun.cn/news/7016.html

相关文章:

  • 购买高价域名如何选择可靠中介?
  • STM32 CubeIDE(1.18.0) LED闪烁
  • AI动态场景生成:重塑影视创作的技术革命
  • mpv.net媒体播放器:为什么这款Windows播放器能成为技术爱好者的首选?
  • 带带弟弟识别文字验证码报异常问题解决:AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘
  • SG-PNh750-MOD-221(Profinet 转 Modbus RTU 网关)特点与功能介绍
  • 手把手教你用VSCode远程调试量子程序,10分钟快速上手
  • PC小说阅读器终极免费版:打造个性化数字阅读体验
  • 2025全新IDM使用方案:小白也能轻松掌握的终极指南
  • 全开源20亿参数大模型,揭秘清华团队如何突破资源限制训练LLM
  • 深度解析:4大维度构建量化因子归因的实战框架
  • YOLOv5模型瘦身实战:三大轻量化技术深度解析
  • SpringBoot
  • AH40G10是40V 10A双N+P沟道增强型MOSFET
  • 为什么顶尖开发者都在用VSCode做量子编程?真相曝光
  • note-gen AI笔记应用快速上手:10分钟掌握高效知识管理技巧
  • 东莞自动化设备工厂8个solidworks、caxa研发共用一台服务器
  • 全球国家编码数据宝库:一站式解决国际标准化需求 [特殊字符]
  • aio-switch-updater终极指南:Nintendo Switch定制化完全教程
  • Wan2.2-T2V-5B可用于博物馆展品动态复原展示
  • typing和dataclass
  • MindSpore网络编译问题BuildModel error 134
  • 拼多多PHP SDK:5分钟搞定电商API集成,让开发效率翻倍 [特殊字符]
  • Node-RED Dashboard实战指南:零基础构建专业数据可视化界面
  • 3分钟掌握nodeppt Mermaid插件:让你的演示文稿从此告别图片导入烦恼
  • 5分钟掌握dnd-kit网格对齐:React拖拽开发终极指南
  • 5分钟掌握WheelPicker:Android选择器的终极开发指南
  • ANTLR4 C++ 终极指南:从语法解析到高性能应用开发
  • 突破性音源!洛雪音乐实现全网音乐一键获取
  • BGP、OSPF、EIGRP,哪种协议用在哪?一文全讲透!