{"id":51148808,"url":"https://github.com/lonnnnnng/mail","last_synced_at":"2026-06-26T04:30:35.146Z","repository":{"id":354400131,"uuid":"1217670092","full_name":"lonnnnnng/mail","owner":"lonnnnnng","description":"一个简单的Web端发信工具，支持自定义发信人。支持2925邮箱批量发信","archived":false,"fork":false,"pushed_at":"2026-04-22T05:37:04.000Z","size":500,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-28T12:40:19.735Z","etag":null,"topics":["2925","mail","web","webmail"],"latest_commit_sha":null,"homepage":"","language":"EJS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lonnnnnng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-22T05:37:00.000Z","updated_at":"2026-04-22T05:39:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lonnnnnng/mail","commit_stats":null,"previous_names":["lonnnnnng/mail"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/lonnnnnng/mail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonnnnnng%2Fmail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonnnnnng%2Fmail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonnnnnng%2Fmail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonnnnnng%2Fmail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lonnnnnng","download_url":"https://codeload.github.com/lonnnnnng/mail/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lonnnnnng%2Fmail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34803678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2925","mail","web","webmail"],"created_at":"2026-06-26T04:30:29.733Z","updated_at":"2026-06-26T04:30:35.118Z","avatar_url":"https://github.com/lonnnnnng.png","language":"EJS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 邮箱发送工具\n\n一个功能强大的邮箱发送工具，支持单个和批量发送邮件，实时推送发送状态。\n\n## 功能特性\n\n- ✅ 支持多家邮箱配置（163、QQ、126、阿里云等）\n- ✅ 单个和批量邮件发送\n- ✅ 批量邮箱地址自动生成（格式：prefix_0001@domain.com）\n- ✅ 实时发送状态推送（WebSocket）\n- ✅ 可设置发件间隔，避免邮件服务器限制\n- ✅ 邮件主题和内容自动添加流水号\n- ✅ 配置保存在本地，刷新不丢失\n- ✅ 可折叠的配置区域，节省页面空间\n- ✅ 实时的发送状态弹框\n\n## 技术栈\n\n- **后端**：Node.js + TypeScript + Express + Nodemailer + WebSocket\n- **前端**：HTML5 + CSS3 + JavaScript + EJS\n\n## 安装步骤\n\n### 1. 克隆项目\n\n```bash\ngit clone \u003crepository-url\u003e\ncd mail\n```\n\n### 2. 安装依赖\n\n```bash\nnpm install\n```\n\n### 3. 编译项目\n\n```bash\nnpm run build\n```\n\n### 4. 启动服务器\n\n```bash\nnpm start\n```\n\n服务器将运行在 `http://localhost:3000`\n\n## 使用方法\n\n### 1. 配置发件人信息\n\n1. 点击\"发件人配置\"标题展开配置区域\n2. 选择邮箱类型（自动填充SMTP配置）\n3. 填写发件人邮箱和密码/授权码\n4. 点击\"保存配置\"按钮\n\n![发件配置](imgs/发件配置.png)\n\n### 2. 发送单个邮件\n\n1. 选择\"单个发送\"模式\n2. 输入收件人邮箱地址\n3. 填写邮件主题和内容\n4. 点击\"发送邮件\"按钮\n5. 查看实时发送状态\n\n![单个发送](imgs/单个发送.png)\n\n### 3. 批量发送邮件\n\n1. 选择\"批量发送\"模式\n2. 输入基础邮箱地址（如 `user@example.com`）\n3. 输入批量数量（如 10）\n4. 输入起始序列号（如 1）\n5. 输入发件间隔（建议 1000 毫秒以上）\n6. 填写邮件主题和内容\n7. 点击\"预览收件人\"查看生成的邮箱列表\n8. 点击\"发送邮件\"按钮\n9. 查看实时发送状态\n\n![批量发送](imgs/批量发送.png)\n\n## 注意事项\n\n1. **授权码获取**：部分邮箱（如QQ邮箱）需要使用授权码而不是登录密码\n2. **发件间隔**：为避免被邮件服务器视为垃圾邮件，建议设置合理的发件间隔\n3. **批量数量**：单次批量发送数量不宜过大，建议控制在 50 封以内\n4. **配置安全**：发件人密码/授权码仅保存在本地浏览器，不会上传到服务器\n\n## 项目结构\n\n```\nmail/\n├── src/                # TypeScript源代码\n│   ├── index.ts        # Express服务器入口\n│   └── emailService.ts # 邮件发送服务\n├── views/              # 前端模板\n│   └── index.ejs       # 主页面\n├── dist/               # 编译输出目录\n├── package.json        # 项目配置\n├── tsconfig.json       # TypeScript配置\n└── ARCHITECTURE.md     # 架构文档\n```\n\n## 常见问题\n\n### Q: 发送邮件失败，提示\"Missing credentials for PLAIN\"\nA: 请检查发件人配置是否正确，特别是邮箱地址和密码/授权码\n\n### Q: 批量发送时，邮件服务器拒绝连接\nA: 请增加发件间隔，避免过于频繁的请求\n\n### Q: 配置保存后刷新页面丢失\nA: 请确保浏览器支持localStorage，并且未被禁用\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 许可证\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flonnnnnng%2Fmail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flonnnnnng%2Fmail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flonnnnnng%2Fmail/lists"}