最近OpenClaw这个开源智能体项目火了之后,后台收到最多的私信不是问怎么部署,而是问“部署好了之后到底能干点啥”。确实,光有一个能聊天的AI助手,新鲜劲过了就没什么意思了。但如果你能让它帮你发邮件、写日报、定时通知,那性质就完全不一样了——这相当于给你的工作流里加了一个不要工资的助理。
这篇文章我会避开所有编程话题,纯讲怎么通过OpenClaw的 零代码 能力,把发送邮件这件事跑通。不需要懂Python,不需要会写接口,甚至不需要明白SMTP协议底层是怎么握手的。你只要跟着点、照着填,十分钟以后就能让AI帮你把邮件发出去。我自己在测试环境里用Docker部署、Ollama接本地模型跑通了这个流程,也在安卓手机的Termux上试过,下面会把两种路线的细节都拆开讲清楚。
1. 为什么是OpenClaw,以及“零代码”到底怎么理解
1.1 OpenClaw在智能体里到底算个什么角色
先别急着操作,把概念捋顺了,后面填配置的时候才不会懵。OpenClaw本质上是一个智能体运行框架,它跟单纯的大模型对话服务不一样。大模型本身只会“说话”,你跟GPT聊天,它给你回一段文字,仅此而已。但OpenClaw干的事是把大模型的“理解能力”接到真实世界的工具上——你能让它操控文件、查询信息、调用外部服务,而发送邮件就是它最典型、最实用的一个技能。
它的工作链条是这样的:你先在OpenClaw里配置好一个邮箱账号(发信用的),再写一段“技能描述”告诉AI什么时候该用这个邮箱、邮件格式应该是什么样。之后你在聊天框里用大白话说“帮我给老王发个邮件,告诉他项目进度推迟两天”,OpenClaw就会自己把这句话拆解成发信动作:提取收件人、生成邮件内容、连接邮箱服务器、执行发送。整个过程你不需要写一个字的代码,这就是本文标题里“零代码”的真实含义。
1.2 为什么选择“发送邮件”作为第一个上手技能
我为什么推荐大家把发邮件作为OpenClaw的入门练习,而不是让它去控制智能家居或者操作数据库?因为邮件的反馈链路最短、最直观。你在聊天框里下完指令,几秒后手机就能收到新邮件提醒,这种“成了”的感觉特别强,能帮你快速建立对智能体的信心。
而且邮件的应用场景非常广。我自己试过的几个典型用法:
- 自动日报:每天早上让OpenClaw根据昨天的记录生成一封工作小结,发给你的上级或团队群组。
- 告警通知:跟家里的监控脚本配合(脚本你自己写或者抄现成的都行),一旦检测到异常就让OpenClaw发邮件通知你。
- 批量沟通:给十几位客户写内容类似、称呼不同的邮件,让AI逐封生成并发送,省掉复制粘贴的时间。
对新手来说,这几类场景都是“一句话指令就搞定”的活儿,不需要额外维护复杂逻辑。等你把邮件流程跑顺了,再去探索OpenClaw的Skills体系(它的技能扩展机制)也不迟。
1.3 这种“配置文件+对话调用”的模式,跟传统自动化工具有什么区别
可能有人会问:我直接用个定时任务脚本不也能群发邮件吗?为什么要绕一圈用OpenClaw?这里面有个关键差异:传统脚本是死板的,OpenClaw是理解意图的。
传统方式下,你写好的每一条邮件规则都是固定的:主题是什么、正文写什么、发给谁,全部提前编码死。哪天你想改个措辞,或者临时加一个收件人,都得去翻代码。而OpenClaw的做法是,你只告诉它“你有发邮件的能力”和“你有一个邮箱账号”,至于具体每封邮件怎么写、什么时候发,由AI根据你的对话指令现场决定。这意味着它的复用性极高——同一套配置,今天让它发日报,明天让它发会议邀请,后天让它发节日问候,全凭你一句话。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备:先把OpenClaw跑起来再说
2.1 部署方案选型:Docker最省心,手机也能装
在聊邮件配置之前,你得先有一个能用的OpenClaw实例。目前社区里最常见的部署路径是两条:
方案A:Docker部署(推荐新手)。如果你有一台电脑(Windows、macOS、Linux都行),并且装好了Docker,这是最稳妥的路子。Docker的好处是环境隔离、依赖打包,你不需要在自己电脑上安装一堆乱七八糟的Python包,也不会把系统搞乱。
方案B:Termux部署(安卓手机)。这个方案最近热度非常高,很多人想在手机上跑OpenClaw。Termux是安卓平台上的一个终端模拟器,能在上面运行Linux环境。如果你手边没有电脑,用旧手机也能折腾,但要注意手机性能直接决定本地模型跑得快不快。
我个人建议:第一次实验千万别在手机上搞。手机屏幕小、热管理差、命令输入费劲,出个错排查起来能急死人。先用电脑把流程跑通,再考虑手机端迁移。
2.2 Docker方式安装OpenClaw的完整步骤
我用的是官方镜像,整个安装过程可以浓缩成三步:
bash复制# 第一步:拉取镜像
docker pull openclaw/openclaw:latest
# 第二步:创建配置目录
mkdir -p ~/.openclaw
# 第三步:启动容器(注意替换成你自己的路径)
docker run -d \
--name openclaw \
-p 8888:8888 \
-v ~/.openclaw:/root/.openclaw \
-e OPENCLAW_MODEL_BACKEND=ollama \
-e OPENCLAW_OLLAMA_BASE_URL=http://你的主机IP:11434 \
--restart=always \
openclaw/openclaw:latest
这几行命令的意图我得解释一下,不然你复制完还是心里没底:
-p 8888:8888是把容器里的8888端口映射到宿主机,之后你通过浏览器访问http://localhost:8888就能打开OpenClaw的Web操作界面。-v ~/.openclaw:/root/.openclaw是数据持久化。你之后写的技能文件、配置文件都存在这个目录里,容器删了重建也不会丢。OPENCLAW_MODEL_BACKEND=ollama表示我让OpenClaw去连接本地Ollama提供的模型服务。这个适合没有独享API密钥、想完全免费跑通流程的人。
你可能会注意到我特意写了 OPENCLAW_OLLAMA_BASE_URL=http://你的主机IP:11434,而不是 localhost。这是个很容易踩的坑:容器内部的 localhost 指向的是容器自己,不是你的宿主机。要让容器里的OpenClaw能访问宿主机上的Ollama,必须填宿主机在局域网里的IP地址,比如 http://192.168.1.100:11434。
2.3 模型后端怎么选:本地Ollama还是云端API
这里给出我在实际使用中的对比感受,方便你按自己的条件做决定:
| 对比项 | 本地Ollama | 云端API |
|---|---|---|
| 费用 | 免费(用自己电脑算力) | 按token计费,新用户一般有赠送额度 |
| 响应速度 | 看显卡/CPU性能,家用电脑偏慢 | 很快,通常1-3秒出结果 |
| 邮件理解质量 | 好的模型也够用,但复杂指令会吃力 | 更强,能处理更长的邮件、更复杂的语气 |
| 配置难度 | 需要先装Ollama再拉模型 | 填一个API Key就行 |
| 适合场景 | 体验、折腾、数据洁癖 | 正经干活、追求效率 |
我自己的测试环境是拿Ollama跑的,模型用的是 qwen2.5:7b。说实话,让它发最简单的“你好,请查收附件”这类邮件,完全够用。但如果你希望AI能帮你润色一封语气委婉的拒绝邮件,或者写一个带行业术语的商务通知,本地小模型就比较吃力了,这时候上个云端API会舒服很多。
如果你选择云端API,启动容器时把环境变量换一下就行,大致长这样:
bash复制docker run -d \
--name openclaw \
-p 8888:8888 \
-v ~/.openclaw:/root/.openclaw \
-e OPENCLAW_MODEL_BACKEND=openai \
-e OPENCLAW_API_KEY=你的密钥 \
-e OPENCLAW_BASE_URL=https://api.你的模型服务商.com/v1 \
-e OPENCLAW_MODEL=gpt-4o-mini \
--restart=always \
openclaw/openclaw:latest
注意,这里用的是通用接口写法,只要你的模型服务商提供OpenAI兼容格式,都可以这么接。很多国内外的模型服务商都支持这套协议,你在它的开发者文档里找到 base_url 和 api_key 填进去就行。
2.4 部署完毕后的验证方法
镜像启动之后,别急着配邮件。先用最简单的方式确认它已经活了:
打开浏览器访问 http://localhost:8888,如果看到一个聊天窗口,说明Web界面起来了。在对话框里随便问一句:“你好,请简单介绍一下你自己”。
有回显且不报错,说明整个链路已经打通:浏览器 → OpenClaw框架 → 模型后端(Ollama或API) → 返回结果。
这一步通过后,你的基座就稳定了。接下来我们开始碰重头戏——配置邮件发送。
3. 零代码配置邮件:从填参数到自动发信
3.1 邮件发送需要准备的核心参数
在动手配置之前,我们需要先备齐几样东西。这部分不需要写代码,但你必须去自己的邮箱后台把参数捞出来:
- 邮箱账号(发件人地址):比如
sender@example.com - SMTP服务器地址:以常见的QQ邮箱为例是
smtp.qq.com,163邮箱是smtp.163.com,Gmail是smtp.gmail.com - SMTP端口号:通常用465(SSL加密)或587(STARTTLS加密)。这里我强烈建议别用25端口,因为很多云服务器和家用宽带的运营商都会封禁25端口来防止垃圾邮件,你会发现连接老是超时。
- 授权码 / 应用专用密码:这是新手最容易卡住的地方。现在主流邮箱(QQ、163、Gmail等)都不再允许你用纯账号密码登录SMTP服务,而是在账号设置里开启“SMTP服务”或“生成应用专用密码”,让你得到一个一长串的加密密码。这个授权码跟你登录邮箱的密码不一样,是独立生成的。
有几个国内的邮箱服务商在生成授权码时需要发送一条短信验证,或者在App里扫码确认,不同的服务商操作入口不一样。总之,你拿去填到OpenClaw配置里的,一定是这个“授权码”或者“应用专用密码”,而不是你日常登录用的邮箱密码。
3.2 在OpenClaw的配置文件里添加邮件参数
OpenClaw会把全局设置集中在 ~/.openclaw/config.yaml 这个文件里。如果你是用Docker部署的,这个文件就在你宿主机刚才映射的 ~/.openclaw 目录下。
用编辑器打开这个文件(Windows上可以用记事本,macOS/Linux用vim或nano都行),在合适的位置加上这么一段:
yaml复制mail:
enabled: true
smtp_host: smtp.qq.com
smtp_port: 465
smtp_user: sender@example.com
smtp_pass: 你的授权码
smtp_ssl: true
default_recipient: ""
sender_name: "OpenClaw助手"
字段的含义很简单:
smtp_ssl: true表示走465端口的那种SSL加密连接。如果你选的是587端口,改成smtp_ssl: false,OpenClaw会自动用STARTTLS方式。default_recipient可以先留空。它是用来设置“默认收件人”的,如果你以后想让它发的邮件统统抄送一份到自己的邮箱,可以填在这里。sender_name是显示在收件人邮箱里的发件人名称,你随便填,比如“我的AI助理”。
保存文件之后,重启容器让配置生效:
bash复制docker restart openclaw
注意不要漏掉这一步。配置文件是启动时加载的,你改完不重启等于白改。
3.3 创建“发送邮件”技能:核心是在描述里讲清楚意图
配置好邮箱参数,OpenClaw还不一定知道怎么用。这一步我们就要用到标题里说的 OpenClaw零代码 的精华部分——技能(Skill)机制。
技能的本质就是一个带特定格式描述的文本文件,放在 ~/.openclaw/skills/ 目录下。OpenClaw启动时会扫描这个目录,把里面每个技能文件的描述告诉AI模型,让模型知道“我有这些能力,遇到什么场景应该调用哪个技能”。
现在,我们在 ~/.openclaw/skills/ 里新建一个文件,命名为 send_email.md,内容如下:
markdown复制---
name: send_email
description: 发送邮件。当用户要求发送邮件、写邮件、通知某人、发送日报或需要邮件联系某人时,使用这个技能。该技能可以接收收件人地址、邮件主题、邮件正文参数。
---
使用邮件发送功能时,请按以下流程处理:
1. 从用户对话中提取收件人邮箱地址、邮件主题、邮件正文。
2. 如果收件人没有明确给出邮箱地址,但给出了姓名,请询问用户获取完整邮箱地址。
3. 调用内置的邮箱函数发送邮件,发送成功后将结果反馈给用户。
看着像不像在写使用说明?没错,这就是零代码的核心思路——你不需要写函数、写接口、写逻辑,你只需要用大白话告诉AI这个功能是干嘛的、该怎么用。真正发邮件那一步,是OpenClaw框架内置的邮件工具去完成的,你只负责“定义能力 + 维护意图描述”。
--- 中间的部分是YAML元数据,规定了技能名和触发条件描述。下面的流程部分是可选的,但对AI理解指令有非常大的帮助。描述写得越具体,AI越不容易把“发邮件”和“写邮件草稿”搞混。
保存文件后,同样需要重启一次OpenClaw(或者刷新技能缓存,不同版本的机制略有差异。如果你用的版本支持热加载,甚至不需要重启)。稳妥起见,第一次还是全部重启一遍。
3.4 实战测试:用对话指令发出你的第一封邮件
技能配好、配置重启完毕之后,就可以来到激动人心的测试环节了。
在OpenClaw的Web聊天框里输入:
code复制给 292837465@qq.com 发一封邮件,主题是“测试邮件”,正文写“这是OpenClaw发送的第一封测试邮件,收到请回复。”
发送之后,观察它的反应。我自己的实测过程大概是这样的:它会先解析出收件人、主题、正文三要素,然后提示“正在调用发信技能”,接着返回“邮件发送成功”。
你再去收件人的邮箱里刷新一下,应该就能看到这封邮件躺在收件箱里了。如果没有看到,去垃圾箱翻一翻——有些邮箱服务器对来自非主流IP的发件比较敏感,第一封容易被过滤。这种情况我们后面在排查部分会专门讲。
如果你发的是一封内容比较复杂的邮件,比如带称呼、带结尾落款、分小标题的正式商务邮件,直接把要求打进去就行:
code复制帮我的客户王先生写一封邮件,内容是:季度合作项目进度汇报,我们已完成第一阶段开发,预计下周进入测试。请用正式的商务语气,加上问候语和落款。发到 wang@example.com
模型会自动生成一封结构完整的邮件,然后按你给的地址发出去。你可以在聊天记录里看到AI生成的全部内容,如果不满意可以随时让它“重新改一下”或“换个语气再发一次”。
3.5 让邮件技能自动化:定时任务与触发场景
如果你想更进一步——不满足于手动发指令,而是想让OpenClaw在特定时间主动发邮件,那就涉及定时任务了。OpenClaw同样支持用配置文件定义定时调度,没有让你写代码,设置起来也是填空式的。
在 config.yaml 里加一段如下的配置:
yaml复制schedules:
- name: daily_report
cron: "0 9 * * *"
prompt: "根据最近的工作记录,生成一封今日工作日报,发送到 manager@example.com"
enabled: true
这段配置的意思很容易理解:每天早上9点,OpenClaw会自动使用你配置好的邮件技能,把一个日报邮件发到指定邮箱。cron 表达式里的 0 9 * * * 表示“每天的9点0分”,它是一种时间调度格式。
这里我想提醒一个关键点:定时任务依赖的是模型在后台自主执行。如果你用本地小模型,生成的日报质量可能很“模板化”;如果你用云端API,模型会把 prompt 当成“任务”来理解,生成一封可读性还不错的日报。所以如果你对自动化内容质量有要求,建议至少用中等级别的模型。
同时注意,定时的邮件依然需要收件人邮箱是明确的。如果你希望AI“找到合适的收件人”,目前的版本还做不好这种模糊决策,最好自己在配置里写死收件人地址。
4. 实操中高频踩坑与逐步排查记录
4.1 报错“SMTP Authentication Failed”怎么处理
这是我遇到最多的问题,没有之一。看起来像是认证失败,也就是邮箱服务器说“我不认识你给的账号密码”。
排查思路按下面顺序走:
- 确认你填进
smtp_pass的不是邮箱登录密码,而是“授权码”或“应用专用密码”。这一步能解决一半以上的认证报错。 - 确认授权码是否过期。注意有些邮箱服务商(以安全性著称的那几家)会定期让授权码失效,或者在你更换设备后要求重新生成。如果你更新过邮箱密码,授权码也可能同步失效。
- 确认你的
smtp_user是不是完整的邮箱地址。有些服务商支持只填@前面的部分,但为了通用性,建议填完整的。
如果全都排除了还不行,可以先去邮箱后台确认一下SMTP服务的开关。部分邮箱默认是不开启第三方客户端发信权限的,你需要手动去设置里打开,并完成验证绑定。
4.2 超时连不上服务器,或连接被重置
如果你在日志里看到类似于 Connection timed out 的报错,大概率是网络层的问题。
首先检查你填的 smtp_port。刚才说过,25端口在很多网络环境里是被封的。改用465或587之后,情况通常立刻好转。
第二个要查的是SSL/TSL设置一致性。465端口通常对应 smtp_ssl: true,587端口通常对应 smtp_ssl: false。如果你把两者配反了,常见表现是连接上了但握手失败。记住这个对应关系大概能省掉很多来回试探。
第三种情况在Docker部署下特有:如果你在容器内配置了邮箱但通过宿主机访问不了外网邮件服务器,可能是容器自身的DNS解析有问题。试着在容器里执行 docker exec openclaw ping smtp.qq.com,如果ping不通,说明容器网络有异常。这种情况把Docker服务重启一下,或者切换网络模式为 host 模式即可。
4.3 邮件明明发送成功,就是收不到
邮件在OpenClaw这边显示“发送成功”,说明你的SMTP服务器已经接收了这封邮件。此时收不到,问题通常出在两个地方:
- 检查收件人邮箱的垃圾箱。尤其是第一次发信、发信IP不常见、正文带链接和附件时,被判定为垃圾邮件是常态。
- 如果是自己给自己发(测试时经常这样),有些邮箱服务商对“自己给自己发信”有额外策略,可能延迟或过滤。
想要减少进垃圾箱的概率,建议你在正文里不要带购买链接,不要全篇大写,不要加过多感叹号。这些都是垃圾邮件评分规则的典型特征。
如果你是给自己的域名邮箱发信,并且在云服务商的VPS上部署的OpenClaw,那还可以去看看SPF、DKIM等发信域名记录的配置。这两个记录相当于你域名的“发信身份证”,配置好了能显著提升送达率。不过这一步涉及域名DNS管理,属于进阶内容,非自建域名邮箱的读者可以跳过。
4.4 Skill技能文件不生效,“发邮件”三个字没触发任何动作
有时候文件建了、配置也写了,但你在聊天框里跟AI说“发邮件”,它只是回复你一串文字,并没有真正调用任何工具。这种“只会聊、不会干”的现象,通常是因为技能描述不够明确,或者模型不够聪明没能正确匹配意图。
解决方法有两个方向:
- 改描述:把
description里的触发词改得更多元化一些,比如加上“邮件、mail、email、联络、通知、发信”等多个相关词。模型是根据描述里的语义来判定触发的,描述越丰富的匹配准率越高。 - 换模型:如果你用的是本地小模型(7B级别以下),指令理解能力确实有限。换个更大的模型,比如
qwen2.5:14b或直接上云端API,这个问题马上会改善。
4.5 Termux手机版部署的特有问题
如果你头铁要在手机上折腾,有几个现实问题先打个预防针:
- Termux默认的软件源在国内网络环境下载可能较慢,建议切换国内镜像源。
- OpenClaw需要监听端口,手机Termux里跑起来之后,你得确保手机的防火墙允许该端口通信,同时局域网内其他设备要访问的话,手机和电脑要处在同一WiFi下。
- 手机通常用的是移动网络或家庭WiFi,运营商对25端口的封锁有时比固定宽带更严格。遇到连接超时直接把邮箱端口换到465或587。
- 手机上跑本地模型的话,8G内存以下的手机会很吃力。如果你只是想在手机上体验流程,建议云端API方案,不要硬跑本地模型。
4.6 实操心得小结
我把这一套流程在Docker、Termux、不同邮箱服务商(QQ、163、Gmail模拟、域名邮箱)上都跑过一遍,总结下来最重要的体会是:这套体系里,难度不在于运行环境,而在于你把“技能描述”写得多清楚。所有环节里,唯一需要你动点脑子的,就是思考“AI应该怎么理解我的需求”。只要你把这一步想透了,OpenClaw翻车率会非常低。
另外一个小技巧:第一次测试时,别写太复杂的邮件,就发五个字“这是一封测试邮件”。先把链路跑通,再逐渐加复杂度。盲目一上来就写长篇,万一出错了,你很难判断是邮件配置的问题还是邮件内容的问题。
还有一个建议是保留收件人的完整地址。你让AI根据名字去推断邮箱,它目前还没那个能力。提前把收件人的邮箱地址打在聊天指令里,或者写进技能描述里,体验会顺滑很多。
5. 再往前一步:邮件技能还能怎么跟其他技能组合
5.1 让OpenClaw“读文件→生成摘要→发邮件”一条龙
邮件技能最大的价值,是能跟OpenClaw的其他能力串起来用,形成一个完整的自动化工作流。比如:你可以给OpenClaw一个固定的目录,让它定期读取里面的文本文件或日志,然后基于这些内容生成一封摘要邮件发给你。
在这个场景里,你不需要写复杂的脚本逻辑,只需要在技能描述里增加一条:“当用户要求整理目录下的内容并发送邮件时,先读取该目录下所有文本文件,然后根据内容生成摘要邮件并发送。” 这依然是纯自然的描述,但AI会自主去调用文件读取的能力、内容总结的能力,以及邮件发送的能力。
5.2 把邮件变成“触发器”
更进阶的玩法,是让邮件成为其他任务的前置条件。比如收到特定邮件时,OpenClaw自动回复“已收到”;或者每天早上检测一下收件箱有没有新邮件,有的话整理成摘要推送到你的聊天界面。这个玩法绕了一些,涉及收件、解析、意图判断,但框架本身提供了这类扩展点,你依然不需要编程。
不过我建议新手先别碰收件功能,先把发信跑稳。收件涉及IMAP/POP3协议配置、邮件解析、多编码兼容性问题,比发信麻烦一个量级。先把发信这套搞明白了,再来研究收到的邮件怎么处理。
5.3 用“邮件发送记录”做持续优化
还有一个我特别推荐的小习惯:每次发送完邮件,在聊天框里让OpenClaw回顾一下邮件内容,问它“这封邮件的语气是否合适?有哪些地方可以改进?” 这个动作看起来简单,但能让AI在后续生成邮件时自动带上自我修正的偏好,相当于一种粗糙的持续调优,最终生成的邮件质量会比第一次使用有明显提升。
写在最后的一点真实感受
坦白说,OpenClaw这套“技能描述驱动”的设计,一开始我是持怀疑态度的。在传统的软件工程思维里,功能就应该用代码精确控制,靠AI理解自然语言来决定执行流程,听起来总有点不踏实。但实际跑下来,我发现这种怀疑在简单场景里是多余的。
如果你只是希望让AI帮你把邮件发出去,你不需要会编程。你需要的只是:一个能跑的OpenClaw环境、一个邮箱授权码、一段清晰的技能描述。这三样东西凑齐,剩下的就是说话而已。
我个人的操作习惯是:先把所有配置项的文档过一遍,然后在本地起一个测试环境,用最简单的指令把每个技能都触发一遍。过程中遇到问题就按上面那些排查思路挨个查,通常都能迅速找到原因。
如果你正在部署OpenClaw,或者刚开始接触智能体框架,我建议你把我这个“邮件小白教程”当作你的起点。发邮件是最好上手的场景,也是最能立刻体现智能体价值的功能之一。等你跑通了第一条链路,后面再去探索自动化办公、定时任务、多工具协同,都会变得顺理成章。
最后再分享一个小经验:配置文件写好之后,最好存一份备份到网盘或者Git仓库。我吃过一次亏,容器重置之后技能文件和配置全没了,重新配一遍虽然不麻烦,但折腾的时间不值当。存好备份,就能随时一键复活你的AI邮件助理了。
