AI agent skill · by @openakita
Smtp Email Sender
Send emails via SMTP (Gmail, Outlook, etc.). Supports attachments, HTML content, and multiple recipients. Use when user asks to send email, compose email, or email someone.
Archived 2026-10-23 · Source updated 2026-09-17 · License: AGPL-3.0. Check the original repository for the latest version.
SKILL.md instructions
# SMTP Email Sender 通过 SMTP 协议发送邮件,支持 Gmail、Outlook、企业邮箱等。 ## 前置要求 ### 1. Gmail 用户 如果使用 Gmail,需要: 1. 启用两步验证 2. 创建应用专用密码(App Password) - 访问:https://myaccount.google.com/apppasswords - 选择"邮件"和应用名称 - 复制生成的 16 位密码 ### 2. Outlook/Hotmail 用户 1. 启用两步验证 2. 创建应用密码:https://account.microsoft.com/security 3. 或使用普通密码(如果允许) ### 3. 企业邮箱用户 联系 IT 部门获取: - SMTP 服务器地址 - SMTP 端口(通常 587 或 465) - 是否需要 SSL/TLS ## 配置 在 `.env` 文件中添加以下环境变量: ```bash # SMTP 配置 SMTP_SERVER=smtp.gmail.com SMTP_PORT=587 SMTP_USERNAME=your_email@gmail.com SMTP_PASSWORD=your_app_password # Gmail 使用应用专用密码 SMTP_USE_TLS=true ``` 或者首次使用时运行配置脚本。 ## 使用方法 ### 基本用法 调用 `send_email.py` 脚本: ```bash python scripts/send_email.py \ --to recipient@example.com \ --subject "邮件主题" \ --body "邮件正文" ``` ### 完整参数 | 参数 | 必需 | 说明 | |------|------|------| | `--to` | 是 | 收件人邮箱(多个用逗号分隔) | | `--subject` | 是 | 邮件主题 | | `--body` | 是 | 邮件正文 | | `--cc` | 否 | 抄送邮箱(多个用逗号分隔) | | `--bcc` | 否 | 密送邮箱(多个用逗号分隔) | | `--attachment` | 否 | 附件路径(多个用逗号分隔) | | `--is_html` | 否 | 正文是否为 HTML 格式(默认 false) | | `--from_name` | 否 | 发件人显示名称 | ### 示例 **发送简单邮件**: ```bash python scripts/send_email.py \ --to friend@example.com \ --subject "周末聚会" \ --body "这周末有空吗?一起吃饭吧!" ``` **发送 HTML 邮件带附件**: ```bash python scripts/send_email.py \ --to boss@company.com \ --subject "项目报告" \ --body "<h1>项目进度报告</h1><p>详见附件...</p>" \ --is_html true \ --attachment "report.pdf,chart.xlsx" \ --from_name "张三" ``` **发送给多人**: ```bash python scripts/send_email.py \ --to "alice@example.com,bob@example.com" \ --cc "manager@example.com" \ --subject "会议纪要" \ --body "今天的会议纪要如下..." ``` ## 支持的 SMTP 配置 ### Gmail ``` SMTP_SERVER=smtp.gmail.com SMTP_PORT=587 SMTP_USE_TLS=true ``` ### Outlook/Hotmail ``` SMTP_SERVER=smtp-mail.outlook.com SMTP_PORT=587 SMTP_USE_TLS=true ``` ### QQ 邮箱 ``` SMTP_SERVER=smtp.qq.com SMTP_PORT=587 SMTP_USE_TLS=true ``` ### 163 邮箱 ``` SMTP_SERVER=smtp.163.com SMTP_PORT=587 SMTP_USE_TLS=true ``` ### 企业邮箱(示例) ``` SMTP_SERVER=smtp.company.com SMTP_PORT=587 SMTP_USE_TLS=true ``` ## 常见问题 ### 1. 认证失败 **Gmail**: - 确保启用了两步验证 - 使用应用专用密码,不是普通密码 - 检查是否开启了"不够安全的应用"访问(不推荐) **Outlook**: - 检查是否需要应用密码 - 确认 SMTP 地址正确 ### 2. 连接超时 - 检查防火墙设置 - 尝试端口 465(SSL)代替 587(TLS) - 确认 SMTP 服务器地址正确 ### 3. 附件太大 - Gmail 限制 25MB - Outlook 限制 20MB - 大文件建议使用云盘链接 ## 安全建议 1. **永远不要**在代码中硬编码密码 2. 使用环境变量或加密的配置文件 3. 定期更换应用专用密码 4. 不要在公共网络使用 SMTP 发送敏感信息 ## 故障排除 运行测试脚本验证配置: ```bash python scripts/test_smtp.py ``` 如果测试失败,检查: 1. `.env` 文件配置是否正确 2. 网络连接是否正常 3. 邮箱账号密码是否正确 4. 防火墙是否阻止 SMTP 端口