# 邮件发送技能 为nanobot提供完整的邮件发送功能,支持附件、HTML格式、抄送/密送等高级功能。 ## 🚀 功能特性 ### 核心功能 - ✅ **邮件发送**:支持纯文本和HTML格式 - ✅ **附件支持**:支持多种文件类型(文本、图片、PDF、压缩包等) - ✅ **多收件人**:支持抄送(CC)和密送(BCC) - ✅ **中文支持**:完整的中文内容支持 - ✅ **大文件支持**:支持发送较大附件 ### 高级功能 - ✅ **自动配置**:从nanobot配置文件读取邮箱设置 - ✅ **错误处理**:完善的错误处理和日志记录 - ✅ **进度显示**:发送过程实时状态显示 - ✅ **测试模式**:内置测试邮件生成功能 ## 📋 使用方法 ### 命令行工具 ```bash # 发送简单邮件 python3 /home/ubuntu/.nanobot/workspace/send_email_with_attachments.py \ 收件人邮箱 "邮件主题" "邮件正文" # 发送带附件的邮件 python3 /home/ubuntu/.nanobot/workspace/send_email_with_attachments.py \ 收件人邮箱 "带附件的邮件" "请查看附件" \ --attachments 文件1.txt 文件2.pdf 图片.png # 发送带抄送的邮件 python3 /home/ubuntu/.nanobot/workspace/send_email_with_attachments.py \ 收件人邮箱 "会议通知" "请准时参加" \ --cc 抄送人1@example.com 抄送人2@example.com # 发送测试邮件(自动创建测试附件) python3 /home/ubuntu/.nanobot/workspace/send_email_with_attachments.py \ --test --test-to 2927951@qq.com ``` ### 在nanobot中使用 ```python # 导入邮件发送函数 from send_email_with_attachments import send_email # 发送简单邮件 send_email( to_email="recipient@example.com", subject="邮件主题", body="邮件正文" ) # 发送带附件的邮件 send_email( to_email="recipient@example.com", subject="带附件的邮件", body="请查看附件", attachment_paths=["file1.txt", "file2.pdf"] ) ``` ## ⚙️ 配置要求 ### 邮箱配置 邮件功能使用nanobot配置文件中的邮箱设置: ```json { "channels": { "email": { "enabled": true, "smtpHost": "smtp.163.com", "smtpPort": 465, "smtpUsername": "your-email@163.com", "smtpPassword": "your-auth-code", "smtpUseSsl": true, "fromAddress": "your-email@163.com" } } } ``` ### 支持的邮箱服务 1. **163/126邮箱**:推荐,配置简单 2. **QQ邮箱**:需要授权码 3. **Gmail**:需要应用专用密码 4. **其他SMTP服务**:支持标准SMTP协议 ## 📁 文件结构 ``` email-sender/ ├── SKILL.md # 技能说明文档 ├── send_email_with_attachments.py # 主工具文件 └── examples/ # 使用示例 ``` ## 🎯 使用示例 ### 示例1:发送工作日报 ```bash python3 send_email_with_attachments.py \ team@company.com \ "工作日报 - $(date +%Y-%m-%d)" \ "今日完成工作:\n1. 项目A开发\n2. 会议讨论\n3. 文档编写" \ --attachments daily_report.txt progress_chart.png \ --cc manager@company.com ``` ### 示例2:发送项目文档 ```bash python3 send_email_with_attachments.py \ client@example.com \ "项目文档交付" \ "尊敬的客户,\n\n附件中是项目相关文档,请查收。" \ --attachments project_spec.pdf design_docs.zip \ --html "

项目文档

请查看附件

" ``` ### 示例3:自动通知 ```bash # 结合cron定时发送 0 9 * * 1-5 python3 send_email_with_attachments.py \ team@company.com \ "每日晨会提醒" \ "早上好!\n\n今日晨会9:30开始,请准时参加。" ``` ## 🔧 技术细节 ### 支持的附件类型 - **文本文件**:.txt, .csv, .json, .xml, .html, .md - **图片文件**:.png, .jpg, .jpeg, .gif, .bmp - **文档文件**:.pdf, .doc, .docx, .xls, .xlsx - **压缩文件**:.zip, .rar, .tar, .gz - **其他文件**:所有二进制文件 ### 文件大小限制 - 单个附件:受邮箱服务商限制(通常10-25MB) - 总附件大小:建议不超过20MB - 大文件建议:使用压缩或云存储链接 ### 编码处理 - 文本编码:UTF-8 - 文件名:支持中文文件名 - 邮件头:正确编码处理 ## 🛠️ 故障排除 ### 常见问题 1. **发送失败**:检查邮箱配置、网络连接、授权码 2. **附件无法打开**:检查文件权限、文件完整性 3. **中文乱码**:确保使用UTF-8编码 4. **大附件失败**:减小附件大小或分开发送 ### 调试模式 ```bash # 查看详细错误信息 python3 -c "import send_email_with_attachments; send_email_with_attachments.send_email(...)" ``` ## 📈 性能优化 ### 发送优化 1. **批量发送**:多个收件人一次性发送 2. **附件压缩**:大文件先压缩再发送 3. **异步发送**:对于大量邮件使用队列 ### 内存管理 - 大文件分块读取 - 及时释放内存 - 错误恢复机制 ## 🔒 安全注意事项 1. **密码安全**:使用授权码而非登录密码 2. **附件扫描**:发送前检查附件安全性 3. **收件人验证**:避免发送到错误地址 4. **日志清理**:定期清理发送日志 ## 🚀 扩展功能 ### 计划中的功能 - [ ] 邮件模板系统 - [ ] 邮件队列管理 - [ ] 发送状态跟踪 - [ ] 邮件统计分析 - [ ] 自动回复规则 ### 集成功能 - 与图片生成技能结合 - 与定时任务结合 - 与文件监控结合 ## 📞 支持与反馈 如有问题或建议,请: 1. 检查配置文件是否正确 2. 查看发送日志获取详细信息 3. 测试简单邮件确认基本功能 4. 联系开发者获取帮助 --- **版本**: 1.0.0 **更新日期**: 2026-03-13 **作者**: nanobot AI助手 **状态**: ✅ 生产就绪