# Rust邮件发送服务 基于Rust语言开发的异步邮件发送服务,支持SMTP协议。 ## 功能特性 - ✅ 异步发送邮件 - ✅ 支持纯文本和HTML格式 - ✅ 支持抄送、密送、回复地址 - ✅ 支持邮件优先级设置 - ✅ 连接池和连接复用 - ✅ 自动重试机制 - ✅ 完整的错误处理 - ✅ 详细的日志记录 - ✅ 健康检查 - ✅ 统计信息 ## 快速开始 ### 1. 克隆项目 ```bash git clone cd mail-sender ``` ## 项目结构 ```bash mail-sender/ ├── Cargo.toml # 项目配置和依赖 ├── .env # 环境变量(不要提交到git) ├── .env.example # 环境变量示例 ├── .gitignore # Git忽略文件 ├── README.md # 项目说明 └── src/ ├── main.rs # 主程序入口 ├── config.rs # 配置管理 ├── mailer.rs # 邮件服务核心 ├── models.rs # 数据模型 ├── error.rs # 错误处理 ├── utils.rs # 工具函数 └── templates/ # 模板系统 ├── mod.rs # 模板模块入口 ├── registry.rs # 模板注册和管理 └── welcome.html # 示例模板文件 ``` ## 如何使用 ### 1. 初始化项目 ```bash cargo new --bin mail-sender cd mail-sender ``` ### 2. 创建目录结构 ```bash mkdir -p src touch src/{config.rs,email_service.rs,error.rs,models.rs,utils.rs} ``` ### 3. 安装依赖 ```bash # 将上述Cargo.toml内容复制到项目中 cargo add lettre --features smtp-transport,builder,rustls-tls,async-std1 cargo add async-std --features attributes cargo add dotenv config serde thiserror anyhow cargo add log env_logger chrono uuid ``` ### 4. 配置环境变量 ```bash cp .env.example .env # 编辑.env文件,填入你的配置 ``` ### 5. 运行项目 ```bash cargo run ``` ### 6. 构建发布版本 ```bash cargo build --release ``` ## 代码说明 ### 核心组件 1. EmailService: 邮件发送服务的核心类,负责管理SMTP连接、发送邮件、重试逻辑等。 2. EmailConfig: 配置管理类,支持从环境变量加载配置,包含完整的SMTP服务器配置。 3. EmailRequest: 邮件请求数据结构,包含收件人、主题、正文、附件等信息。 4. EmailResult: 发送结果数据结构,包含发送状态、错误信息等。 ### 异步设计 - 使用async-std作为异步运行时 - lettre库支持异步SMTP传输 - 所有发送操作都是非阻塞的 ### 错误处理 - 使用thiserror定义详细的错误类型 - 为外部库的错误实现了自动转换 - 所有可能失败的操作都返回Result ### 功能总结 - 重试机制: 自动重试失败的发送操作 - 连接池: 重用SMTP连接,提高性能 - 健康检查: 定期检查SMTP连接状态 - 统计信息: 记录发送统计,便于监控 - 多种格式: 支持纯文本和HTML邮件 - 完整头部: 支持抄送、密送、回复地址等 ## 🚀 下一步扩展建议 你现在已经有了坚实的基础,可以扩展: 1. 邮件模板:预定义HTML模板,动态填充内容 2. 附件支持:发送带附件的邮件 3. 邮件队列:异步批量发送 4. 发送统计:记录发送成功/失败率 5. API接口:提供HTTP API供其他服务调用