156 lines
3.7 KiB
Markdown
156 lines
3.7 KiB
Markdown
# TaskPing 邮件回复功能使用指南
|
||
|
||
[English](./HOW_TO_USE_EMAIL_REPLY.md) | **中文**
|
||
|
||
## 📋 完整使用流程
|
||
|
||
### 步骤1:启动邮件监听服务
|
||
在终端1中运行:
|
||
```bash
|
||
cd /Users/jessytsui/dev/TaskPing
|
||
npm run relay:pty
|
||
```
|
||
|
||
这会启动邮件监听服务,监听 `noreply@example.com` 收到的回复邮件。
|
||
|
||
### 步骤2:启动Claude Code并集成TaskPing
|
||
在终端2中运行:
|
||
```bash
|
||
# 启动Claude Code
|
||
claude
|
||
|
||
# 在Claude Code中使用TaskPing发送邮件通知
|
||
# 例如:当任务完成时会自动发送邮件
|
||
```
|
||
|
||
### 步骤3:配置Claude Code钩子(如果还没配置)
|
||
在Claude Code中运行:
|
||
```bash
|
||
# 查看当前钩子配置
|
||
cat ~/.config/claude-code/settings/hooks.json
|
||
|
||
# 如果没有配置,需要设置TaskPing钩子
|
||
# 复制TaskPing的钩子配置文件
|
||
```
|
||
|
||
## 📧 邮件回复测试流程
|
||
|
||
### 方法1:手动测试发送邮件
|
||
```bash
|
||
# 在TaskPing目录中运行
|
||
node test-smtp-token.js
|
||
```
|
||
|
||
这会发送一封测试邮件到 `user@example.com`,邮件主题包含Token格式:
|
||
`[TaskPing #XXXXXXXX] Claude Code 任务完成 - TaskPing-Token-Test`
|
||
|
||
### 方法2:实际集成测试
|
||
1. 在Claude Code中执行一个任务
|
||
2. 任务完成后,TaskPing会自动发送邮件通知
|
||
3. 邮件会发送到配置的邮箱(`user@example.com`)
|
||
|
||
## 💌 如何回复邮件发送命令
|
||
|
||
### 收到邮件后:
|
||
1. 在 `user@example.com` 收到邮件,主题如:
|
||
```
|
||
[TaskPing #A53PXR7F] Claude Code 任务完成 - 项目名
|
||
```
|
||
|
||
2. **直接回复邮件**,在正文中输入命令:
|
||
```
|
||
继续优化代码
|
||
```
|
||
或
|
||
```
|
||
生成单元测试
|
||
```
|
||
或
|
||
```
|
||
解释这个函数的作用
|
||
```
|
||
|
||
3. 发送回复后,邮件监听服务会:
|
||
- 收到回复邮件
|
||
- 提取Token(A53PXR7F)
|
||
- 找到对应的PTY会话
|
||
- 将命令注入到Claude Code CLI
|
||
|
||
## 🔧 配置文件说明
|
||
|
||
### .env 配置
|
||
```env
|
||
# 发件配置(飞书邮箱)
|
||
SMTP_HOST=smtp.feishu.cn
|
||
SMTP_USER=noreply@example.com
|
||
SMTP_PASS=kKgS3tNReRTL3RQC
|
||
|
||
# 收件配置(飞书邮箱)
|
||
IMAP_HOST=imap.feishu.cn
|
||
IMAP_USER=noreply@example.com
|
||
IMAP_PASS=kKgS3tNReRTL3RQC
|
||
|
||
# 用户通知邮箱
|
||
EMAIL_TO=user@example.com
|
||
|
||
# 允许发送命令的邮箱(安全白名单)
|
||
ALLOWED_SENDERS=user@example.com
|
||
```
|
||
|
||
## 🐛 故障排除
|
||
|
||
### 1. 收不到邮件回复
|
||
检查:
|
||
- 邮件监听服务是否正在运行(`npm run relay:pty`)
|
||
- 是否从白名单邮箱(`user@example.com`)发送回复
|
||
- 邮件主题是否包含正确的Token格式
|
||
|
||
### 2. 命令没有注入到Claude Code
|
||
检查:
|
||
- Claude Code是否还在运行
|
||
- PTY会话是否还有效(Token未过期)
|
||
- 检查服务日志输出
|
||
|
||
### 3. 查看调试日志
|
||
```bash
|
||
# 查看详细的邮件监听日志
|
||
DEBUG=true npm run relay:pty
|
||
```
|
||
|
||
## 📱 支持的邮件客户端
|
||
|
||
用户可以从任意邮箱回复到 `noreply@example.com`:
|
||
- ✅ Gmail 网页版/客户端
|
||
- ✅ 手机Gmail APP
|
||
- ✅ Apple Mail
|
||
- ✅ Outlook
|
||
- ✅ QQ邮箱
|
||
- ✅ 163邮箱
|
||
- ✅ 任何支持SMTP的邮箱
|
||
|
||
## 🔒 安全特性
|
||
|
||
1. **Token验证**:每个会话有唯一Token,防止误操作
|
||
2. **发件人白名单**:只有授权邮箱可以发送命令
|
||
3. **会话过期**:Token有24小时有效期
|
||
4. **命令过滤**:自动过滤潜在危险命令
|
||
|
||
## 🎯 实际使用场景
|
||
|
||
### 场景1:长时间构建
|
||
```
|
||
1. 在Claude Code中启动项目构建
|
||
2. 离开电脑,在手机收到构建完成邮件
|
||
3. 手机直接回复:"继续部署到生产环境"
|
||
4. 回到电脑时部署已完成
|
||
```
|
||
|
||
### 场景2:代码审查
|
||
```
|
||
1. Claude Code完成代码生成
|
||
2. 收到邮件通知
|
||
3. 回复:"请添加单元测试和文档"
|
||
4. Claude自动生成测试和文档
|
||
```
|
||
|
||
这样就可以实现真正的远程控制Claude Code了! |