1. 微信里发一句话,电脑上的 OpenClaw 就把邮件发了
先说清楚这篇要解决的事:你人在外面,手机只有微信,但需要收一封重要邮件、或者把电脑里某个文件当附件发出去。正常流程是打开电脑、登录邮箱、找文件、填收件人、点发送,一套下来十分钟没了。现在换成在微信对话框里打一句话,电脑上的 OpenClaw 自动调 IMAP/SMTP 把活干完,邮件发出去之后你还能在微信里看到执行结果。
这套玩法的核心组件有三个:微信负责当遥控器,OpenClaw(QClaw 是它的桌面发行版)负责在电脑上执行,邮箱的 IMAP/SMTP 协议负责真正收发信。中间还差一环——OpenClaw 调用模型来理解你的自然语言指令,这一步需要模型 API。我用 TaoToken 的统一通道把模型调用接进来,一个 Key 走完全部流程,不用在多个平台之间来回切。
适合谁看:手里有电脑常开、邮箱是 163/QQ/Gmail 这类支持 IMAP 的、想用微信远程处理邮件但不想写代码的人。整篇按「配置 → 接入 → 验证 → 排错」的顺序写,每一步都有可复制的片段,跟着做能复现「微信发指令 → 电脑执行 → 邮箱收到信」的闭环。
需要提前说明的是,OpenClaw 本身是运行在你电脑上的程序,微信只是消息入口,所有邮件操作都在你本机完成,授权码也只存在本地配置里。这一点在后面的配置环节会具体展开。
2. 前置准备:OpenClaw 侧邮箱监听与 TaoToken 统一 Key 接入
2.1 先把邮箱的 IMAP/SMTP 服务打开
以 163 邮箱为例,登录网页版后进入「设置 → POP3/SMTP/IMAP」,把 IMAP/SMTP 服务开启。开启时会让你设置一个授权码,这个码不是你的登录密码,是专门给第三方客户端用的。把它记下来,后面配置里要用。
QQ 邮箱路径类似:「设置 → 账户 → POP3/IMAP/SMTP 服务」,开启后同样生成授权码。Gmail 需要在账户安全里开启两步验证后生成应用专用密码。
这里有个容易踩的坑:很多人直接把邮箱登录密码填进配置,结果连接时报AUTHENTICATIONFAILED。IMAP/SMTP 走的是授权码,不是登录密码,两者不能混用。
2.2 在 OpenClaw 里配置邮箱 skill
OpenClaw 的收发邮件能力是通过imap-smtp-email这个 skill 实现的。你可以在 OpenClaw 的 skill 目录里找到它,配置文件通常是一个 JSON 或 TOML。下面是一份可复制的配置片段,路径按你实际的 skill 目录调整:
{ "skill": "imap-smtp-email", "accounts": [ { "name": "163", "imap_host": "imap.163.com", "imap_port": 993, "imap_secure": true, "smtp_host": "smtp.163.com", "smtp_port": 465, "smtp_secure": true, "username": "your_account@163.com", "password": "你的授权码", "default": true } ] }字段说明:imap_port用 993 走 SSL,smtp_port用 465 走 SSL,这两个端口是 163 的标准配置。password填授权码,不是登录密码。default: true表示这是默认账户,发信时不指定账户就用它。
如果你用的是 TOML 格式,等价写法是:
[[accounts]] name = "163" imap_host = "imap.163.com" imap_port = 993 imap_secure = true smtp_host = "smtp.163.com" smtp_port = 465 smtp_secure = true username = "your_account@163.com" password = "你的授权码" default = true配置改完记得重启 OpenClaw,让 skill 重新加载。
2.3 接入 TaoToken 统一通道
OpenClaw 理解你的自然语言指令需要调用模型。这里用 TaoToken 的统一通道,一个 Key 就能调多个模型,省得在 OpenClaw 里配一堆 provider。
先到 TaoToken 控制台创建一个 API Key,地址是 https://taotoken.net/api-keys 。创建后复制出来,形如sk-开头的一串。
然后在 OpenClaw 的模型配置里填入三件套:Base URL、API Key、Model ID。
{ "provider": "taotoken", "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key", "model_id": "claude-sonnet-4-5", "max_tokens": 4096 }Base URL 填https://taotoken.net/api,注意不要带多余的路径后缀。Model ID 按你实际要用的模型填,比如claude-sonnet-4-5或gpt-4o。如果你在 OpenClaw 里用的是 Claude Code 那套配置,对应的是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个环境变量:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的Key"这样 OpenClaw 在调用模型时就会走 TaoToken 通道,邮箱 skill 负责实际收发信,模型负责理解你的指令。两者分工明确,互不干扰。
3. 可复制配置:微信关联 OpenClaw 与完整 settings 片段
3.1 微信扫码关联
OpenClaw 桌面版(QClaw)安装后,左下角有登录入口,用微信扫码登录。登录后会弹出「关联微信」的提示,点确认,这样手机微信就能给电脑上的 OpenClaw 发指令了。
关联成功后,微信里会出现一个 QClaw 客服会话,你在这个会话里发的消息会被转发到电脑上的 OpenClaw 执行。注意这不是普通的微信聊天,是 OpenClaw 通过微信客服消息通道建立的双向通信。
3.2 完整的 settings 配置片段
把前面的邮箱配置和模型配置合在一起,一份完整的 settings 大概长这样。路径按你实际的 OpenClaw 配置目录调整,通常在~/.openclaw/settings.json或安装目录下的config文件夹:
{ "model": { "provider": "taotoken", "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key", "model_id": "claude-sonnet-4-5" }, "skills": { "imap-smtp-email": { "accounts": [ { "name": "163", "imap_host": "imap.163.com", "imap_port": 993, "imap_secure": true, "smtp_host": "smtp.163.com", "smtp_port": 465, "smtp_secure": true, "username": "your_account@163.com", "password": "你的授权码", "default": true } ] } }, "wechat": { "enabled": true, "channel": "customer_service" } }三件套对照一下:Base URL 是https://taotoken.net/api,API Key 是sk-开头那串,Model ID 是claude-sonnet-4-5。这三个填对,模型调用就通了。邮箱那部分填对,收发信就通了。
3.3 如果你用 Cline MCP 或 Codex
有些人是通过 Cline 的 MCP 配置来挂 OpenClaw 的,那配置位置在 Cline 的 MCP settings 里,格式是:
{ "mcpServers": { "openclaw": { "command": "openclaw", "args": ["--mcp"], "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" } } } }如果你用的是 Codex,配置在~/.codex/auth.json,把 base URL 和 key 填进去:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key" }不管走哪条路,三件套(Base URL + Key + Model ID)都要齐全,缺一个就会在调用时报错。
4. 验证请求:从微信发指令到邮箱收到回信
4.1 第一步:在微信里查邮件
配置完成后,在微信的 QClaw 会话里发一句:「帮我看看最近三封邮件」。电脑上的 OpenClaw 会收到这条消息,调用imap-smtp-emailskill 去连 163 的 IMAP 服务器,拉取最近三封邮件,然后把标题和发件人返回给你。
如果这一步成功,微信里会看到类似这样的回复:
最近三封邮件: 1. 发件人:boss@company.com 主题:Q3 报表 时间:今天 09:12 2. 发件人:noreply@github.com 主题:PR merged 时间:今天 08:45 3. 发件人:friend@qq.com 主题:周末聚餐 时间:昨天 20:30这一步验证的是 IMAP 读取链路:微信 → OpenClaw → IMAP → 返回结果 → 微信。
4.2 第二步:发一封测试邮件
在微信里发:「给 test@qq.com 发一封邮件,主题是测试,内容是微信控制邮箱成功」。OpenClaw 会调用 SMTP 去发信。
发完后去 test@qq.com 的收件箱看,应该能收到这封信。如果没收到,先看垃圾箱,163 发 QQ 有时会被拦。
这一步验证的是 SMTP 发送链路:微信 → OpenClaw → SMTP → 目标邮箱。
4.3 第三步:发带附件的邮件
这一步稍微复杂点。先在电脑上准备一个文件,比如~/Documents/report.pdf。然后在微信里发:「把 ~/Documents/report.pdf 作为附件发给 test@qq.com,主题是报表」。
OpenClaw 会先读文件确认存在,然后调 SMTP 带附件发送。目标邮箱收到后,附件应该能正常下载打开。
这一步验证的是文件读取 + 附件编码 + SMTP 发送的完整链路。如果附件收到但打不开,多半是 MIME 编码问题,检查 skill 版本是否最新。
4.4 用 API 直接验证模型通道
如果你想单独确认 TaoToken 通道是通的,可以绕过 OpenClaw,直接用 curl 打一次:
curl https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-你的Key" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 100, "messages": [{"role": "user", "content": "回复:通道正常"}] }'返回里如果有content字段且内容是「通道正常」,说明 Key 和 Base URL 都对。这一步能把模型通道和邮箱 skill 的问题分开定位——如果 curl 通了但微信指令没反应,问题在 OpenClaw 或微信关联;如果 curl 就报错,问题在 Key 或 Base URL。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
5.1 401 Unauthorized
这是最常见的。报错长这样:
Error: 401 Unauthorized {"error":{"type":"authentication_error","message":"invalid api key"}}原因通常是三个:Key 复制时多了空格、Key 已经过期或被删、Base URL 填错导致请求打到了别的服务。
排查顺序:先检查api_key字段有没有前后空格,再登录 TaoToken 控制台确认 Key 还在,最后确认base_url是https://taotoken.net/api而不是别的地址。如果用的是环境变量,echo $ANTHROPIC_API_KEY看一下值对不对。
5.2 local proxy failed
报错长这样:
Error: local proxy failed: dial tcp 127.0.0.1:7890: connect: connection refused这个说明 OpenClaw 或某个依赖在尝试走本地代理端口,但那个端口没有服务在跑。检查你的系统代理设置,或者 OpenClaw 配置里有没有proxy字段指向了一个不存在的端口。把代理配置去掉,或者改成直连。
如果你之前配过HTTP_PROXY或HTTPS_PROXY环境变量,unset掉再试。
5.3 reading choices 报错
报错长这样:
Error: reading choices: unexpected end of JSON input这个通常出现在模型返回的响应不是标准 JSON 时。原因可能是 Base URL 填成了https://taotoken.net/api/v1这种带后缀的,导致请求路径拼接错误,返回了 HTML 而不是 JSON。
把 Base URL 改回https://taotoken.net/api,不要带/v1或/messages后缀,SDK 会自己拼。
5.4 OAuth 相关报错
如果你在 OpenClaw 里用的是 Claude Code 那套 OAuth 登录,可能会遇到:
Error: OAuth token expired, please re-authenticate这种情况建议直接切到 API Key 模式,用 TaoToken 的 Key 走ANTHROPIC_BASE_URL+ANTHROPIC_API_KEY,比 OAuth 稳定,也不会因为 token 过期中断。配置方式在 3.3 节已经给了。
5.5 邮箱连接报错
如果模型通道没问题,但查邮件时报IMAP connection refused或AUTHENTICATIONFAILED,检查三件事:授权码是不是填成了登录密码、IMAP 服务有没有在邮箱设置里开启、端口是不是 993(SSL)。163 和 QQ 都必须用授权码,不能用登录密码。
6. 把微信变成邮箱遥控器,长期跑起来
整套流程跑通之后,实际使用是这样的:你在外面用微信发一句话,电脑上的 OpenClaw 调 TaoToken 通道理解指令,再调邮箱 skill 执行收发信,结果回到微信。整个过程你不需要打开电脑,也不需要登录邮箱网页。
如果你打算长期用,建议把 OpenClaw 设成开机自启,电脑保持常开。模型调用走 TaoToken 的 Coding Plan 会更划算,适合这种高频、长期的 Agent 场景,地址是 https://taotoken.net/coding-plan 。邮箱 skill 的配置一次写好就不用动了,授权码除非你主动重置,否则一直有效。
有个实用技巧:在微信里给 OpenClaw 发指令时,把常用操作说清楚一点,比如「查未读邮件」比「看看邮件」更准,因为模型会根据你的措辞决定调 IMAP 的哪个文件夹和过滤条件。附件路径用绝对路径,相对路径在 OpenClaw 的工作目录不确定时容易找不到文件。
最后提醒一句,邮箱授权码存在本地配置文件里,别把这个文件传到公开仓库。如果多人共用一台电脑,给 OpenClaw 单独建一个系统账户,配置文件权限设成 600。