> 本文是一篇实战笔记,记录了在 OpenClaw 中配置邮箱技能的全过程,包括安装、配置、踩坑和解决。

---

### 一、为什么要配置邮箱技能?

 

OpenClaw 本身是一个能干活儿的 AI 智能体,但默认不带收发邮件的能力。通过安装 `imap-smtp-email` 技能,可以让 OpenClaw 读取你的邮箱、自动回复、甚至根据邮件内容触发其他任务。比如:每天早上自动整理未读邮件摘要、收到特定关键词邮件后自动备份附件等。

 

### 二、环境说明(我的情况)

 

| 项目 | 配置 |

|------|------|

| 操作系统 | 阿里云ubuntu |

| 部署方式 | Docker 容器 |

| 邮箱服务商 | 163 邮箱(网易) |

 

如果你的环境不同(比如直接安装在本地,不是 Docker),路径会有所差异,但配置逻辑是一样的。

 

### 三、安装邮箱技能

 

#### 3.1 推荐方法:用 clawhub 一键安装

 

```bash

clawhub install imap-smtp-email

```

 

这是最简单的方式,会自动下载技能到正确位置。

 

#### 3.2 备选方法:手动安装

 

```bash

# 克隆技能仓库

git clone https://github.com/openclaw/skills.git ~/.openclaw/skills-temp

# 复制目标技能

cp -r ~/.openclaw/skills-temp/skills/gzlicanyi/imap-smtp-email ~/.openclaw/skills/

# 删除临时文件

rm -rf ~/.openclaw/skills-temp

```

 

#### 3.3 安装依赖

 

技能本身需要一些 Node.js 依赖,进入技能目录安装:

 

```bash

cd ~/.openclaw/workspace/skills/imap-smtp-email

npm install --production

```

 

---

 

### 四、Docker 环境下配置文件放哪里?

 

如果你也是 Docker 部署,会面临一个选择:`.env` 配置文件放在哪个路径?

 

| 方案 | 路径 | 特点 |

|------|------|------|

| 方案 A | `~/.openclaw/workspace/skills/imap-smtp-email/.env` | 全部在 Docker 卷内,备份迁移方便 |

| 方案 B | `~/.config/imap-smtp-email/.env` | 配置独立,技能更新不会覆盖 |

 

**我选了方案 A**,因为我的整个 `.openclaw` 目录都通过 Docker 卷映射到了宿主机,以后换机器只需复制整个目录即可,省心。

 

最终配置文件位置:

```bash

~/.openclaw/workspace/skills/imap-smtp-email/.env

```

 

---

 

### 五、163 邮箱配置详解(关键!)

 

#### 5.1 获取授权码(不是登录密码)

 

> ⚠️ 163 邮箱**不能用登录密码**配置 SMTP/IMAP,必须用**授权码**。

 

步骤:

1. 登录 https://mail.163.com

2. 点击 **设置 → POP3/SMTP/IMAP**

3. 开启 **IMAP/SMTP 服务**

4. 点击 **授权码管理** → 生成授权码(会发送到你的手机)

5. 复制保存这个授权码

 

#### 5.2 编写 .env 文件

 

在技能目录下创建 `.env` 文件,内容如下(替换成你自己的信息):

 

```env

# 网易163邮箱配置

 

# --- 接收邮件 (IMAP) ---

IMAP_HOST=imap.163.com

IMAP_PORT=993

IMAP_USER=your-email@163.com # 你的完整邮箱地址

IMAP_PASS=your-authorization-code # 填授权码,不是登录密码

IMAP_TLS=true

 

# --- 发送邮件 (SMTP) ---

SMTP_HOST=smtp.163.com

SMTP_PORT=465

SMTP_SECURE=true

SMTP_USER=your-email@163.com

SMTP_PASS=your-authorization-code # 同样填授权码

```

 

#### 5.3 其他常见邮箱的服务器地址

 

| 邮箱 | IMAP 服务器 | IMAP 端口 | SMTP 服务器 | SMTP 端口 |

|------|-------------|-----------|-------------|-----------|

| 163 邮箱 | imap.163.com | 993 | smtp.163.com | 465 |

| QQ 邮箱 | imap.qq.com | 993 | smtp.qq.com | 587 |

| Gmail | imap.gmail.com | 993 | smtp.gmail.com | 587 |

| Outlook | outlook.office365.com | 993 | smtp.office365.com | 587 |

 

---

 

### 六、踩坑记录:Unsafe Login 错误及解决方法

 

#### 6.1 问题现象

 

运行接收邮件的脚本时,报错:

```

NO SELECT Unsafe Login. Please contact kefu@188.com for help

```

 

#### 6.2 原因分析

 

163 邮箱的 IMAP 服务器要求客户端在连接时发送一个 **ID 标识**(遵循 RFC 2971 协议),但原生的 `imap` npm 包不发送这个标识,于是服务器认为是“不安全登录”,直接拒绝。

 

#### 6.3 解决方案

 

使用增强版的 `imap-mkl` 包替换原来的 `imap`,并修改脚本中的引用。

 

**完整修复步骤:**

 

```bash

# 1. 进入技能目录

cd ~/.openclaw/workspace/skills/imap-smtp-email

 

# 2. 安装 imap-mkl

npm install imap-mkl

 

# 3. 修改 imap.js,将 require('imap') 改为 require('imap-mkl')

sed -i "s/require('imap')/require('imap-mkl')/" scripts/imap.js

 

# 4. 重启 OpenClaw 网关(使修改生效)

openclaw gateway restart --hard

```

 

> 💡 手动修改的话,打开 `scripts/imap.js`,找到 `const Imap = require('imap');` 改成 `const Imap = require('imap-mkl');` 即可。

 

---

 

### 七、测试验证:看看能不能收发邮件

 

#### 7.1 测试发送邮件

 

```bash

cd ~/.openclaw/workspace/skills/imap-smtp-email

node scripts/smtp.js test

```

 

如果成功,你的收件箱会收到一封测试邮件。

 

#### 7.2 测试接收邮件(查看最近5封)

 

```bash

node scripts/imap.js check --limit 5

```

 

正常会输出邮件的主题、发件人、时间等信息。

 

#### 7.3 进阶测试:自己写一个简单的收发脚本

 

你也可以在技能目录下创建一个 `test.js`,内容如下(记得替换邮箱和授权码):

 

```javascript

const nodemailer = require('nodemailer');

 

const transporter = nodemailer.createTransport({

  host: 'smtp.163.com',

  port: 465,

  secure: true,

  auth: {

    user: 'your-email@163.com',

    pass: 'your-authorization-code'

  }

});

 

transporter.sendMail({

  from: 'your-email@163.com',

  to: 'your-email@163.com',

  subject: 'Hello from OpenClaw',

  text: '这是一封测试邮件,由 OpenClaw 邮箱技能发送。'

}, (err, info) => {

  if (err) console.log('❌ 发送失败:', err);

  else console.log('✅ 发送成功!', info.messageId);

});

```

 

运行 `node test.js` 即可测试。

 

---

 

### 八、总结:几条最重要的经验

 

1. **技能安装用 `clawhub install`**,省去手动复制和依赖安装的麻烦。

2. **163/126 等网易邮箱必须用授权码**,别拿登录密码硬填。

3. **遇到 `Unsafe Login` 错误**,就是缺 IMAP ID 标识,装 `imap-mkl` 并改一行代码即可。

4. **Docker 环境下**,把 `.env` 放在技能目录内(即 Docker 卷里),备份和迁移最方便。

5. **测试要分两步**:先测发送(SMTP),再测接收(IMAP),哪个出错就针对性排查。

 

---

 

### 九、后续可以怎么玩?

 

- **定时邮件摘要**:结合 OpenClaw 的 Cron 技能,每天早上 8 点自动抓取未读邮件,生成摘要发到飞书。

- **邮件自动回复**:收到特定关键词(如“请假申请”)后,自动回复并记录到日历。

- **附件自动备份**:收到带附件的邮件,自动下载到指定文件夹。

 

---

 

### 十、参考链接

 

- [imap-smtp-email 技能主页](https://llmbase.ai/openclaw/imap-smtp-email/)

- [ClawHub 技能市场](https://clawhub.ai/)

- [163 邮箱帮助中心](https://help.mail.163.com/)

 

---

 

*本笔记由 AI 辅助整理,基于真实踩坑经历编写,希望对你有帮助。如果有新的问题或更好的方案,欢迎交流补充。*

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐