HoRain云--Java发送邮件
HoRain云小助手个人主页 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧让大家从底层了解C把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘一起解密网络协议在运行中协议的基本运行机制《docker容器精解篇》全面深入解析 docker 容器从基础到进阶涵盖原理、操作、实践案例助您精通 docker。《linux系列》本专栏主要撰写Linux干货内容从基础到进阶知识由抽象到简单通俗易懂帮你从新手小白到扫地僧。《python 系列》本专栏着重撰写Python相关的干货内容与编程技巧助力大家从底层去认识Python将更多复杂的知识由抽象转化为简单易懂的内容。《试题库》本专栏主要是发布一些考试和练习题库涵盖软考、HCIE、HRCE、CCNA等目录⛳️ 推荐专栏介绍 Java 发送邮件从 SMTP 到企业级 依赖先就位纯 Jakarta MailJava 17 推荐Spring Boot生产首选 最小可跑纯 JavaMailSMTP 25 或 465/587 常见变体HTML / 附件 / 多收件人HTML 邮件带附件多收件人 / 抄送 / 密送 SSL / TLS 端口速查 Spring Boot 写法生产真用这个application.ymlService 层⚠️ 高频踩坑清单️ 生产进阶姿势 Java 发送邮件从 SMTP 到企业级Java 发邮件主线就两条纯 JavaMailJakarta Mail​ 和Spring BootJavaMailSender。前者是底层 API后者是生产里 90% 场景的写法。下面从「能跑」到「不踩坑」铺开。 依赖先就位纯 Jakarta MailJava 17 推荐!-- pom.xml -- dependency groupIdcom.sun.mail/groupId artifactIdjakarta.mail/artifactId version2.0.1/version /dependencyJDK 11 之前叫javax.mailJava 11 后 Jakarta EE 改名jakarta.mail包名从javax.mail.*→jakarta.mail.*别引错。Spring Boot生产首选dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-mail/artifactId /dependency 最小可跑纯 JavaMailSMTP 25 或 465/587import jakarta.mail.*; import jakarta.mail.internet.*; import java.util.Properties; public class MailDemo { public static void main(String[] args) throws Exception { Properties props new Properties(); props.put(mail.smtp.host, smtp.qq.com); props.put(mail.smtp.port, 587); props.put(mail.smtp.auth, true); props.put(mail.smtp.starttls.enable, true); // 587 走 STARTTLS // 465 用 props.put(mail.smtp.socketFactory.class, javax.net.ssl.SSLSocketFactory); 老写法 Session session Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( 123456qq.com, // 发件人 xxxxxx // ⚠️ QQ/163 这里是【授权码】不是邮箱密码 ); } }); Message msg new MimeMessage(session); msg.setFrom(new InternetAddress(123456qq.com)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiverexample.com)); msg.setSubject(测试邮件, UTF-8); msg.setText(你好这是一封 Java 发的邮件, UTF-8); Transport.send(msg); System.out.println(发送成功); } }⚠️ 国内邮箱QQ/163/126密码栏填的不是登录密码是「授权码」——要去邮箱设置 → 开启 POP3/SMTP → 生成授权码卡在这的人 80%。 常见变体HTML / 附件 / 多收件人HTML 邮件msg.setContent(h1Hello/h1p stylecolor:red红色字/p, text/html; charsetUTF-8);带附件MimeMessage msg new MimeMessage(session); msg.setFrom(…); msg.setSubject(带附件, UTF-8); // 正文 MimeBodyPart textPart new MimeBodyPart(); textPart.setText(见附件, UTF-8); // 附件 MimeBodyPart attachPart new MimeBodyPart(); attachPart.attachFile(report.pdf); attachPart.setFileName(MimeUtility.encodeText(报表.pdf, UTF-8, B)); // 中文文件名防乱码 Multipart mp new MimeMultipart(); mp.addBodyPart(textPart); mp.addBodyPart(attachPart); msg.setContent(mp);多收件人 / 抄送 / 密送msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(ax.com,bx.com)); msg.setRecipient(Message.RecipientType.CC, new InternetAddress(ccx.com)); msg.setRecipient(Message.RecipientType.BCC, new InternetAddress(bccx.com)); SSL / TLS 端口速查端口协议备注25SMTP明文很多云厂商封老默认现基本不用587STARTTLS推荐明文→协商加密465SMTPSSSL/TLS 直连老写法mail.smtp.ssl.enabletrueQQ 邮箱两路都通587(STARTTLS) / 465(SSL)163 同理。 Spring Boot 写法生产真用这个application.ymlspring: mail: host: smtp.qq.com port: 587 username: 123456qq.com password: 授权码 # 不是邮箱密码 properties: mail: smtp: auth: true starttls: enable: trueService 层Service public class MailService { Autowired private JavaMailSender mailSender; public void send(String to, String subject, String body) { SimpleMailMessage msg new SimpleMailMessage(); msg.setFrom(123456qq.com); msg.setTo(to); msg.setSubject(subject); msg.setText(body); mailSender.send(msg); } // 带附件 public void sendWithAttach(String to, String pdfPath) throws MessagingException { MimeMessage msg mailSender.createMimeMessage(); MimeMessageHelper helper new MimeMessageHelper(msg, true, UTF-8); helper.setFrom(123456qq.com); helper.setTo(to); helper.setSubject(报表); helper.setText(请查收附件); helper.addAttachment(报表.pdf, new File(pdfPath)); mailSender.send(msg); } }Spring 把Authenticator、Session 构建全包了配置里username/password一把梭比纯 JavaMail 短一半。⚠️ 高频踩坑清单坑现象解法QQ/163 密码用登录密码535 Login Fail换SMTP 授权码​阿里云/腾讯云服务器 25 端口连不通 / 超时换 587 或申请解封 25中文附件名乱码收到???.pdfMimeUtility.encodeText(fileName, UTF-8, B)Gmail要用 App Password 允许低安全应用已废OAuth2 或 App Password企业邮箱钉钉/企业微信要走企业 SMTP 或 API看企业文档常要 IP 白名单生产群发被当成垃圾邮件DKIM/SPF 配好别一秒狂发️ 生产进阶姿势模板邮件FreeMarker / Thymeleaf 渲染 HTML再塞进helper.setText(html, true)异步发Async或 MQ别让主线程卡 SMTP云厂商 SMTP 替代AWS SES / 阿里云 DM / SendGrid → HTTP API不走 SMTP量大稳失败重试MQ 死信比 while-retry 稳要不要顺着往下看Spring Boot Thymeleaf 模板邮件​ 或者AWS SES / 阿里云 DM 的 Java SDK 发信不走 SMTPHTTP 那侧跟前面 FastAPI / PHP 那条工具线也能串上。❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧

相关新闻

美团LongCat-2.0本地部署实战:国产ASIC万亿MoE模型3天完整实测

美团LongCat-2.0本地部署实战:国产ASIC万亿MoE模型3天完整实测

6月30号美团放出LongCat-2.0开源消息的当天,我就拉着机房里8张国产ASIC卡的小集群开始折腾。前后耗了整整3天,从驱动编译、权重分片到服务跑通压测,中间踩的坑够写半本踩坑手册。 很多人盯着1.6万亿参数、5万卡国产集群、SWE-bench Pro 59.5分…

2026/7/3 17:44:01 阅读更多 →
如何高效使用Adobe Illustrator自动化脚本:设计师必备的实用指南

如何高效使用Adobe Illustrator自动化脚本:设计师必备的实用指南

如何高效使用Adobe Illustrator自动化脚本:设计师必备的实用指南 【免费下载链接】illustrator-scripts Some powerfull JSX scripts for extending Adobe Illustrator 项目地址: https://gitcode.com/gh_mirrors/ill/illustrator-scripts Adobe Illustrator…

2026/7/3 17:44:01 阅读更多 →
高校 Google Workspace 邮件安全升级与 AI 钓鱼闭环防御研究 —— 以普林斯顿大学 2026 年 OIT 安全更新为例

高校 Google Workspace 邮件安全升级与 AI 钓鱼闭环防御研究 —— 以普林斯顿大学 2026 年 OIT 安全更新为例

摘要 生成式人工智能重构了网络钓鱼攻击的生产链路,高校依托 Google Workspace 构建的校园邮件体系面临仿冒域名、AI 定制化社工邮件、凭证劫持等复合型威胁。普林斯顿大学信息技术办公室(OIT)2026 年发布 Gmail 邮件安全专项升级方案&#x…

2026/7/3 17:42:00 阅读更多 →

最新新闻

银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

​2026年6月30日下午,由AgeClub(上海银创同行科技有限公司)主办、上海市养老科技产业园协办的“数智银发,生态共赢——银发智能科技产品与线上线下渠道对接会”在产业园403报告厅圆满举行。活动汇聚了如身机器人、程天科技、小维健…

2026/7/3 18:36:40 阅读更多 →
IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

1. 项目概述:IntelliJ UI 测试机器人如果你正在为你的 IntelliJ IDEA 插件编写功能测试,或者想自动化一些繁琐的 IDE 操作流程,那么手动点击、肉眼观察的方式很快就会让你感到力不从心。尤其是在插件功能复杂、涉及多个对话框和菜单交互时&am…

2026/7/3 18:32:39 阅读更多 →
临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

在建筑装饰材料市场,临沂不锈钢铝蜂窝吊顶产品正逐步替代传统石膏板与铝扣板吊顶,成为公共空间与高端住宅装修的热门选项。这种材料本质是一种“三明治结构”,核心在于将不锈钢面板与高强度铝蜂窝芯通过专用复合工艺紧密压合。选材与评测&…

2026/7/3 18:32:39 阅读更多 →
【hive学习笔记2】

【hive学习笔记2】

笔记关联-hive学习笔记 测试Demo 1.首先在windows上(本地)创建几个文件(放一列数据),如:2.在hive建表3.上传数据上传成功显示4.测试查询hive系统架构上图所示是hive的主要组件及其与Hadoop的交互方式&#…

2026/7/3 18:30:39 阅读更多 →
act仿真,任务层

act仿真,任务层

整体分层 任务与环境层:sim_env.py(关节空间控制)、ee_sim_env.py(末端位姿控制)、scripted_policy.py(脚本策略)、assets(MuJoCo XML 场景)。数据层:record…

2026/7/3 18:30:39 阅读更多 →
英伟达RTX Spark超级芯片深度解析:AI PC如何重塑个人计算与工作流

英伟达RTX Spark超级芯片深度解析:AI PC如何重塑个人计算与工作流

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 英伟达和微软联手,这次真的把“AI PC”这个概念给做实了。不是那种在现有硬件上跑个AI助手就宣称自己是AI PC的“贴牌”…

2026/7/3 18:28:38 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻