# mail-send-box **Repository Path**: personal_learn/mail-send-box ## Basic Information - **Project Name**: mail-send-box - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-04 - **Last Updated**: 2026-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 邮件发送客户端 一个功能完整的Java GUI邮件发送客户端,支持多变量配置和HTML格式正文。 **⚠️ 本项目仅供学习,违法后果自负。** ## 功能特性 - ✅ 图形化界面,支持SMTP(SSL/TLS) - ✅ 发件人显示名、主题与HTML正文变量化(`${变量名}`) - ✅ 变量配置区支持随机变量 - ✅ 收件人导入与并发批量发送 - ✅ SOCKS5 / HTTP 代理 - ✅ 发送日志与成功/失败统计 - ✅ URL配置区与“刷新域名”按钮 - ✅ 成功/失败日志文件实时写入(失败含原因) - ✅ 连接测试与状态提示 ## 系统要求 - Java 17 或更高版本 - Maven 3.6 或更高版本 ## 编译和运行 ### 使用Maven编译 ```bash mvn clean compile ``` ### 打包成JAR文件 ```bash mvn clean package ``` ### 运行程序 ```bash # 方式1:使用Maven运行 mvn exec:java -Dexec.mainClass="com.mailclient.MailClientGUI" # 方式2:运行打包后的JAR java -jar target/mail-send-box-1.0.0.jar ``` ## 使用说明 ### 1. 配置SMTP服务器 在左侧"SMTP服务器配置"区域填写: - **SMTP主机**:如 `smtp.qq.com`、`smtp.gmail.com` 等 - **SMTP端口**:常用端口有 25、465(SSL)、587(TLS) - **用户名/邮箱**:您的邮箱地址 - **密码/授权码**:邮箱密码或授权码(部分邮箱需要使用授权码) - **启用SSL/TLS**:根据您的邮箱服务商要求选择 #### 常见邮箱SMTP配置 **QQ邮箱:** - SMTP主机:smtp.qq.com - SMTP端口:587 - 启用TLS:是 - 需要开启SMTP服务并获取授权码 **Gmail:** - SMTP主机:smtp.gmail.com - SMTP端口:587 - 启用TLS:是 **163邮箱:** - SMTP主机:smtp.163.com - SMTP端口:25 或 465(SSL) - 启用SSL:是(如果使用465端口) ### 2. 填写收件人 在"收件人"区域填写收件人邮箱,可多行或使用逗号、分号分隔;也可点击“导入收件人列表”从文件批量导入。 ### 3. 设置发件人显示名(可选) 在“发件人显示名”中填写需要展示的名称(支持变量)。 ### 4. 编写邮件主题 在"主题"输入框中填写邮件主题,支持变量替换。 **示例:** ``` 欢迎 ${name} 使用我们的服务! ``` ### 5. 编写HTML正文 在"HTML正文"文本框中编写HTML格式的邮件正文,支持变量替换。 **示例:** ```html
今天是 ${date}
${content}
此邮件由系统自动发送
``` ### 6. 配置变量 在"变量配置"区域配置变量值,格式为:`变量名=变量值`,每行一个。 **示例:** ``` name=张三 date=2024-01-15 content=这是一封测试邮件,感谢您的使用! ``` ### 7. 域名列表(URL配置)与刷新 - 右侧“变量配置”下方有“URL配置 (url.txt,每行一个)”。 - 列表来源优先级:`~/.mail_send_box/url.txt`(缓存文件) > 内置资源 `src/main/resources/url.txt`。 - 点击“刷新域名”按钮会重新加载列表(从缓存文件读取;若不存在则回退资源),并更新右侧列表展示。 - 邮件正文中使用占位符 `#url#` 时,每封邮件会使用当前内存列表中的随机URL(`UrlProvider.getRandomUrl()`)。 ### 7. 代理配置(可选) 在“代理配置”中可开启 SOCKS5 或 HTTP 代理,填写主机和端口后生效。 ### 8. 测试连接 点击"测试连接"按钮,验证SMTP配置是否正确。 ### 9. 并发与发送日志 - “并发线程数”可设置 1-50,>1 时按收件人并行发送 - 发送后右侧“发送日志”展示每个收件人成功/失败详情,并统计成功/失败数 ### 11. 成功/失败日志文件(实时写入) - 路径:`~/.mail_send_box/` - 文件:`yyyy-MM-dd-success.txt`(成功邮箱,一行一个) - 文件:`yyyy-MM-dd-fail.txt`(失败邮箱与原因,每行:`email -> reason`) - 写入时机:每个收件人发送完成后立即追加写入(顺序与并发模式均实时)。 ### 10. 发送邮件 点击"发送邮件"按钮发送邮件。发送成功后会有提示。 ## 变量使用说明 ### 变量格式 在主题和正文中使用 `${变量名}` 格式来引用变量。 **示例:** - 主题:`${name},您的订单已确认` - 正文:`亲爱的 ${name},您的订单号是 ${orderId}
` ### 变量配置 在"变量配置"区域配置变量值: - 格式:`变量名=变量值` - 每行一个变量 - 支持空行和注释(以 `#` 开头的行会被忽略) ### 随机变量 变量值支持随机生成指令(填在右侧变量配置中),格式: - `random:alpha:长度` 只含字母 - `random:num:长度` 只含数字 - `random:alnum:长度` 字母+数字 示例: ``` token=random:alnum:12 code=random:num:6 nickname=random:alpha:8 ``` **示例:** ``` # 用户信息 name=李四 email=user@example.com # 订单信息 orderId=ORD-2024-001 amount=99.99 ``` ## 项目结构 ``` mail_send_box/ ├── pom.xml ├── README.md └── src/ └── main/ ├── resources/ │ └── url.txt └── java/ └── com/ └── mailclient/ ├── MailClientGUI.java ├── MailSender.java ├── UrlProvider.java ├── SmtpConfig.java ├── SmtpSelector.java ├── ProxyConfig.java └── ProxySelector.java ``` ## 技术栈 - **Java Swing**:GUI界面框架 - **JavaMail API**:邮件发送功能 - **Maven**:项目管理和依赖管理 ## 注意事项 1. 本项目仅供学习,违法后果自负;请遵守当地法律法规 2. 部分邮箱服务商(如QQ邮箱、Gmail)需要使用授权码而不是登录密码 3. 确保网络连接正常,能够访问SMTP服务器;如有需要请正确设置代理 4. HTML正文必须符合HTML格式规范 5. 变量名区分大小写;未配置的变量会被替换为空字符串 6. 并发发送请合理设置线程数,避免触发服务商限流 ## 许可证 / 免责声明 本项目仅供学习和个人使用,禁止用于任何非法或滥用场景,使用者自行承担由此产生的全部后果。