news 2026/6/10 10:22:24

我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)

这个周末我失业了 。

起因很简单:公司项目原因,我需要给订阅列表里的几千个用户发一封更新通知。 市面上的邮件营销工具(Mailchimp
之类)死贵,还要一个个导入联系人;自己写脚本吧,以前得折腾半天
SMTP 协议、搞定并发限制、处理失败重试……想想就头秃 。

正好有 Gemini 3 Pro ,代码能力逆天。我就想试探一下它的底线。 结果这一试,我后背发凉。

我本来只想要个 Demo,它直接给了我一个带连接池
(Connection Pool)、
任务队列(Task Queue)、甚至还顺手写了服务端渲染
(SSR) 的完整全栈应用。

以前我写这套东西起码得两天,这次连写带调,2 小时收工

今天复盘一下我是怎么压榨 Antigravity - Gemini 3 Pro 开发出这个Turbo Mail Sender的。

不仅要看得下去,还要骚气点

我给第一个 Prompt 很简单,但也很刁钻:

我要做一个邮件群发工具的单页 UI。要求:

  1. 写邮件(集成 Quill 富文本编辑器
    )。
  2. 包含监控发送进度(要有一个骚气的进度条和实时日志)。

  3. Tailwind CSS,设计风格要轻色单栏,带点微交互动画。
  4. 直接给我 HTML 单文件就行。

它思考了大概几分钟(网络环境有点差 )。它没有给我堆砌div,它直接甩出了基于 Tailwind 的完整布局,甚至贴心地加上了@keyframes fadeInUp入场动画。

看看这个生成的 UI 代码片段,它连backdrop-filtershadow的细节都处理好了:

<style> @keyframes fadeInUp { from { opacity: 0; transform: translateY(6px);} to { opacity:1; transform: translateY(0); } } .log-entry { opacity:0; transform:translateY(6px); animation: fadeInUp 420ms ease forwards; } /* 进度条的光泽动画,这审美绝了 */ @keyframes shimmer { 0% { background-position: -200px 0 } 100% { background-position: 200px 0 } } </style>

最骚的是,它连 JS 里的富文本编辑器初始化都帮我写好了,甚至考虑到了 SSR 的数据回填逻辑。这哪里是 AI,这简直就是自带 3 年经验的前端同事。

从普通的脚本到工程化

UI 画好了,接下来是后端。这里才是见真章的地方。 很多新手写发邮件脚本,就是写个for循环调用sendMail。结果就是发 100 封后 IP 被封,或者内存溢出。

我给 Gemini 的 Prompt 是:

后端用
Express +
Nodemailer。注意,我要发送几万封邮件。

  1. 必须有连接池 (Connection Pooling),不能每次发送都握手。
  2. 必须有生产者-消费者队列,控制并发数(Concurrency)。
  3. 失败要自动重试。
  4. 给我写出架构级的代码。

如果是以前的 AI,大概率会给我瞎编一个队列。 但它给出的server.js,让我这个老前端都挑不出毛病。

自动实现了连接池缓存

它自己封装了一个TransporterCache类,防止重复创建 SMTP 连接。这波操作直接把性能拉满了。

// server.js 核心片段:连接池 class TransporterCache { constructor() { this.cache = new Map(); } get(host, port, user, pass) { const key = `${user}@${host}`; if (this.cache.has(key)) return this.cache.get(key); // Gemini 居然知道开启 pool: true 选项 const transporter = nodemailer.createTransport({ pool: true, host: host, port: Number(port), secure: Number(port) === 465, auth: { user, pass }, maxConnections: 3, // 自动限制最大连接数 rateLimit: 5 // 还有速率限制,讲究 }); this.cache.set(key, transporter); return transporter; } }

像模像样的任务队列

它没有引入 Redis(因为我要轻量级),而是手搓了一个内存版的TaskManagerWorker

// server.js 核心片段:消费者 Worker class Worker { constructor() { setInterval(() => this.tick(), 500); } tick() { // 经典的消费逻辑:控制并发数 while (taskManager.running < CONFIG.CONCURRENCY && taskManager.queue.length > 0) { const id = taskManager.queue.shift(); const task = taskManager.getTask(id); if (task) this.processTask(task); } } // ...发送与重试逻辑 }

看到这段代码时,我意识到:Gemini 不仅仅是在翻译需求,它更懂架构。

最后的细节修改

做到这里,工具已经能用了。但我故意刁难了一下 Gemini:

现在的配置(SMTP服务器、端口)每次刷新页面就没了,体验太差。但我不想用数据库。你想办法解决一下。

Gemini 3 Pro 给出的方案是:SSR (服务端渲染) + LocalStorage 双重兜底

它直接修改了server.js/路由,在返回 HTML 之前,把 URL 参数里的配置通过正则替换注入到 HTML 中。不用数据库,却实现了配置持久化的错觉。

// server.js:极其暴力的正则替换 SSR,简单粗暴但有效 if (host) { html = html.replace(/id="smtpHost"\s+type="text"\s+value="[^"]*"/, `id="smtpHost" type="text" value="${host}"`); }

说实话,这种正则替换虽然看起来很脏,但在这种微型工具里,不仅省事,而且性能极高。AI 这种能力(知道是小工具就不上重型框架),才是最可怕的。

成果与开源

最终,这个Turbo Mail Sender具备了以下能力:

  • 高并发发送:连接池 + 异步队列。
  • 实时可视化:能看到每一封邮件的发送状态、耗时。
  • 智能重试:遇到网络抖动自动重发。
  • CSV 导入:支持批量导入收件人。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 20:03:07

导师严选2026 TOP9 AI论文写作软件:专科生毕业论文必备测评

导师严选2026 TOP9 AI论文写作软件&#xff1a;专科生毕业论文必备测评 2026年AI论文写作软件测评&#xff1a;为何值得专科生关注 随着人工智能技术的不断进步&#xff0c;AI论文写作工具逐渐成为学术研究中不可或缺的辅助工具。对于专科生而言&#xff0c;撰写毕业论文不仅是…

作者头像 李华
网站建设 2026/6/3 20:43:09

计算机毕业设计springboot基于前后端分离技术的未成年人心理健康咨询系统 基于 SpringBoot 与 Vue 的青少年心理支持平台的设计与实现 前后端分离架构下校园儿童心理援助服务系统

计算机毕业设计springboot基于前后端分离技术的未成年人心理健康咨询系统0614u0m8 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在“双减”与疫情后时代&#xff0c;未成年人焦…

作者头像 李华
网站建设 2026/6/6 20:02:03

量化基金的3个“谍战级”秘密武器,散户根本没法玩

引言: 你是否常常感到困惑&#xff1f;明明周末看到了各种利好消息&#xff0c;满心期待周一的大涨&#xff0c;结果开盘就是“高开低走”&#xff0c;自己总像是慢了半拍。你感觉自己仿佛在和一个看不见的对手博弈&#xff0c;总是在你做出决定之后&#xff0c;市场就走向了反…

作者头像 李华
网站建设 2026/6/7 0:03:40

SRC漏洞挖掘技巧,带你零基础入门到精通赏金!

SRC漏洞挖掘技巧&#xff0c;带你零基础入门到精通赏金&#xff01; 前言 经常会有粉丝朋友私信我&#xff0c;想探究一下国内的SRC&#xff08;安全响应中心&#xff09;平台究竟支持了多少白帽黑客的生活&#xff1f;又有多少白帽黑客能够不依赖于传统工作&#xff0c;全职…

作者头像 李华
网站建设 2026/6/9 20:52:44

电缆护层保护器工作方式详解

电缆护层保护器的工作原理电缆护层保护器主要用于防止电力电缆金属护层&#xff08;如铝护套或铅护套&#xff09;因感应电压或故障电流导致的过电压损坏。其核心功能是通过限制护层电压在安全范围内&#xff0c;同时为故障电流提供低阻抗通路。主要工作方式限压保护 护层保护器…

作者头像 李华
网站建设 2026/6/10 9:43:01

扔掉文本思维链!DiffThinker证明:最好的推理语言不是英语,是像素

DiffThinker让AI像人类一样直接在视觉空间中构思解题路径&#xff0c;彻底抛弃了文本中介的冗余&#xff0c;以生成式图像推理&#xff0c;开启了机器视觉思维的新可能。令人惊叹&#xff01;基于Qwen-Image-Edit打造的DiffThinker&#xff0c;将图像编辑扩散模型变成了多模态视…

作者头像 李华