---
title: "邮件功能：让数字人收发邮件、管理日历"
description: "在 Halo 里配好一个邮箱，数字人就能替你查收、搜索、发送和整理邮件；再填一个 CalDAV 地址，它还能查看和安排日历。"
type: "how-to"
audience: ["office"]
related: ["digital-humans/notifications", "digital-humans/permissions", "digital-humans/triggers"]
lang: "zh-CN"
canonical: "https://hello-halo.cc/docs/features/email.html"
last_updated: "2026-10-19T00:11:17+08:00"
source: "Halo 3.0.4 docs"
---
# 邮件与日历

在 Halo 里配好一个邮箱，数字人就能替你查收、搜索、发送和整理邮件；再填一个 CalDAV 地址，它还能查看和安排日历。

::: say
> 查一下今天的未读邮件，按优先级整理

数字人会读取收件箱里今天的未读邮件，逐封看过后，按轻重缓急给你一份清单。

> 把这份报告发给 zhangsan@example.com

数字人会写好邮件，把报告作为附件直接发出去，然后告诉你发给了谁。发送前不会再问你确认。

**前提**：已按下文配好 **设置 › 消息通道 › 电子邮件**；你是在和一位 [数字人](https://hello-halo.cc/docs/digital-humans/overview.html) 聊天（哪一位都行，新装的 Halo 自带一位「Halo AI 数字人模板」）。普通工作区会话里没有邮件工具。
:::

## 开始之前 {#before-you-start}

邮件和日历只有数字人能用。数字人的 **电子邮件** 能力默认是开着的，但要等你在设置里配好邮箱才真正生效。

| 在哪里 | 能用邮件吗 |
|---|---|
| 在 Halo 里和数字人聊天 | 能 |
| 数字人按计划任务等方式自动运行 | 能 |
| 通过企业微信、飞书或微信机器人和数字人聊 | 能。访客另有限制，见 [机器人里的邮件权限](#im-permission) |
| 普通工作区会话 | 不能，这里没有邮件工具 |

还要知道三点：

- 一个 Halo 只能配一个邮箱，所有数字人共用它。不能给每个数字人配不同的邮箱。
- Halo 用邮箱地址加授权码登录邮箱，不支持「用 Google 账号登录」这类网页授权登录。
- 配置邮箱要你自己在设置里完成，Halo 不能替你填写。

## 准备授权码 {#app-password}

大多数邮箱不允许第三方软件直接用登录密码收发信。你要先在邮箱网站上开启 IMAP 和 SMTP 服务，再生成一个专给软件用的密码。各家叫法不同：授权码、应用专用密码、客户端专用密码。下文统称授权码。

| 邮箱 | 要准备的 | 一般在哪里拿 |
|---|---|---|
| QQ 邮箱、网易 163 / 126 等 | 授权码 | 邮箱网页版的设置里，开启 IMAP/SMTP 服务后生成 |
| Gmail | 应用专用密码 | Google 账号的安全设置，通常要先开启两步验证 |
| Outlook / Microsoft 365 | 应用密码，或按管理员要求 | 账号的安全设置；公司账号问 IT |
| 公司邮箱 | 授权码或客户端专用密码 | 问 IT 要发信服务器地址和端口，并确认收信规则（见下方注意） |

这一步在邮箱服务商的网站上操作，Halo 帮不上。一般步骤：

1. 用浏览器登录邮箱网页版。
2. 打开设置或账号安全页面，开启 IMAP 和 SMTP 服务。
3. 生成授权码，给它起个名字（比如 `halo`）。
4. 马上复制授权码。很多邮箱只显示一次。

同时记下服务商的 SMTP 发信服务器地址和端口，下一步要填。

::: warning 收信和发信要用同一个服务器地址
Halo 只让你填发信（SMTP）服务器。读邮件时，它连同一个地址的 993 端口（IMAP，加密连接），用户名和密码也相同。没有单独填收信服务器的地方。如果你的邮箱收信和发信是两个不同的地址，Halo 能发信，但读不了信。
:::

授权码以明文保存在你电脑上的 `~/.halo/config.json` 里，界面上只显示 `***`。用授权码而不是登录密码，出了问题只需在邮箱网站上作废它。

## 在 Halo 里填写邮箱 {#set-up}

1. 点左侧导航栏底部的 **设置**，选 **消息通道**。
2. 往下找到标着 **单向** 的 **电子邮件** 卡片（说明是「通过 SMTP 邮件发送通知」），点一下展开。
3. 打开 **已启用**。
4. 按下表填写字段。带 * 的必填。

   | 字段 | 填什么 | 说明 |
   |---|---|---|
   | **SMTP 主机** * | 服务商的发信服务器地址 | 框里的 `smtp.gmail.com` 只是示例，不是默认值。Halo 读邮件也连这个地址 |
   | **SMTP 端口** * | 服务商给的端口 | 表单一开始是 `587`，**使用 SSL/TLS** 是关的 |
   | **使用 SSL/TLS** | 服务商要求 465 端口时打开 | 打开后端口自动变成 `465`，关上回到 `587`。你自己改过的端口不跟着变 |
   | **用户名** * | 完整的邮箱地址，如 `zhangsan@example.com` | 数字人发出的邮件以这个地址作为发件人 |
   | **密码** * | 上一步拿到的授权码 | 框里提示「应用密码」 |
   | **默认接收者** * | 通常填你自己的邮箱 | 只用于通知邮件，见 [用邮件接收通知](#notifications)。数字人替你发信时，收件人要在对话里说明 |

5. 填完不用点保存，改动会自动保存。卡片标题右边显示 **已配置** 和一个绿点。

公司提供的 Halo 可能已经预先填好 SMTP 主机、端口等字段。这时通常只需要填用户名和密码。

![消息通道设置里展开的电子邮件卡片，显示 SMTP 主机、端口、SSL/TLS 开关、用户名、密码、默认接收者和测试通过](https://hello-halo.cc/docs/images/features/email/email-card.zh.webp)

## 测试连接 {#test}

1. 在 **电子邮件** 卡片底部点 **测试**。按钮先变成 **测试中...**。
2. 看到绿色的 **测试通过**，说明 Halo 能用这个账号登录发信服务器。
3. 失败时，按钮旁边显示红色的错误原文，对照 [遇到问题](#troubleshooting) 排查。

**测试** 只检查发信服务器（SMTP）能否登录，**不会真的发出一封邮件**。它也不检查收信（IMAP）和日历（CalDAV）。

- **已启用** 关着时，**测试** 按钮是灰的。
- 端口为空或不是有效数字时，会显示「请输入 SMTP 端口」，不会开始测试。

想确认读信也正常，就在数字人聊天里说：

> 列出我邮箱里的所有文件夹

数字人列出收件箱、已发送等文件夹，就说明收信也通了。

## 为数字人打开电子邮件 {#enable-for-digital-human}

每位数字人的 **电子邮件** 能力默认是开着的，一般不用动。想检查或关掉它：

1. 点左侧导航栏的 **数字人**，在 **我的数字人** 里打开这位数字人。
2. 切到 **能力与设置**，找到 **模型与能力** 这一组。
3. 看 **电子邮件** 这一行（「允许此应用读取、发送和管理电子邮件及日历」），开关打开就能用。

如果这一行是灰的，下面还有一行黄色提示「已启用，但尚未配置邮件渠道。请在 设置 > 消息渠道 中进行配置。」，说明 **电子邮件** 卡片的 **已启用** 还关着。点这行提示可以直接跳到设置。

不想让某位数字人碰邮箱，就把它的 **电子邮件** 关掉。改完后如果页面出现 **快速重启**，点它，让正在进行的聊天用上新设置。

::: done
在数字人聊天里说「列出我邮箱里的所有文件夹」，它返回文件夹列表，就说明邮箱和数字人都配好了。
:::

## 数字人能做什么 {#what-it-can-do}

配好以后，数字人在聊天和自动运行里都能用下面这些邮件工具。你用自然语言说要做什么就行，不用记工具名。

| 你可以让它 | 工具 | 说明 |
|---|---|---|
| 列出邮件 | `email_list` | 收件箱或任一文件夹，新的在前；可以只看未读；一次最多 100 封 |
| 读一封邮件 | `email_read` | 正文、发件人、收件人和附件列表 |
| 搜索邮件 | `email_search` | 按主题、发件人、收件人和日期范围搜，支持中文；不是全文搜索；一次最多 50 条 |
| 发新邮件 | `email_send` | 可以抄送、密送，可以附上 Halo 所在电脑上的文件 |
| 回复 | `email_reply` | 可以只回发件人，也可以回复全部，会引用原文 |
| 转发 | `email_forward` | 带上原邮件和附件，可以在前面加一段话 |
| 移动 | `email_move` | 移到其他文件夹，比如垃圾邮件或你自建的文件夹 |
| 标记 | `email_mark` | 已读、未读、加星标、取消星标，可以一次标多封 |
| 删除 | `email_delete` | 默认移到已删除文件夹，可以恢复；也可以彻底删除 |
| 查看文件夹 | `email_folders` | 列出所有文件夹，以及各自的邮件数和未读数 |
| 下载附件 | `email_attachment_download` | 把附件存成电脑上的文件，之后可以接着读、整理 |

可以这样说：

- 「搜一下这两周来自 zhangsan@example.com 的邮件，把带附件的列成表格」
- 「把今天的未读邮件都标成已读」
- 「回复这封邮件，说我周五前给答复」

::: danger 发信和删信前不会再确认
数字人发出、回复、转发或彻底删除邮件时，Halo 不会弹窗让你确认，邮件发出就收不回。想多一道保险：

- 先让它把邮件发给你自己试几次，再发给别人。
- 在数字人的 **系统提示词** 里写明「发邮件前先把收件人和正文发给我，等我同意再发」。这靠 AI 自己遵守，不是强制拦截。
:::

## 管理日历（CalDAV） {#calendar}

填上 CalDAV 地址后，数字人还能查看、新建和删除日历里的日程。CalDAV 是日历的通用协议，很多邮箱自带的日历都支持。

1. 在 **设置 › 消息通道 › 电子邮件** 卡片里，点开 **高级**。
2. 在 **CalDAV URL** 里填服务商提供的日历地址。地址从服务商的帮助文档或 IT 那里获取。
3. 地址里可以写占位符：`{host}` 会换成 **SMTP 主机**，`{email}` 会换成 **用户名**。框里的示例是 `https://{host}/dav/users/{email}/calendars/default/`。
4. **TLS 加密套件** 保持空着（显示「自动（系统默认）」），除非 IT 要求填特定值。

日历用同一个用户名和密码登录。填了地址后，数字人多出三个工具：

| 你可以让它 | 工具 | 说明 |
|---|---|---|
| 查看日程 | `calendar_list` | 列出一段时间内的日程 |
| 新建日程 | `calendar_create` | 标题、开始和结束时间，可选描述、地点、参会人；默认提前 15 分钟提醒 |
| 删除日程 | `calendar_delete` | 删除指定的日程 |

**CalDAV URL** 空着时，这三个工具不会出现。**测试** 不检查日历，想确认就对数字人说「看看我本周的日程」。

## 用邮件接收通知 {#notifications}

同一张 **电子邮件** 卡片也是一个单向通知通道。数字人干完活或遇到重要情况时，可以自己决定发一封通知邮件给 **默认接收者**。

- 通知邮件的发件人显示为「Halo」，主题是 `[Halo] 通知标题`。
- 发通知只要求 **电子邮件** 卡片已启用，不看数字人的 **电子邮件** 能力开关。
- 通知只发给 **默认接收者**。想让数字人发给别人，用上面的发信功能。

通知通道和主动推送到聊天有什么不同，见 [通知与主动推送](https://hello-halo.cc/docs/digital-humans/notifications.html)。

## 机器人里的邮件权限 {#im-permission}

数字人接上机器人后，你在企业微信、飞书或微信里和它聊，也能让它处理邮件。用的是 Halo 里配好的那个邮箱。

- **主人**：和在 Halo 里一样，能用全部邮件工具。
- **访客**：默认不能用邮件。想让企业微信或飞书机器人的访客也能用，打开 **设置 › 消息通道 ›**（机器人）**› 权限 › 权限控制**，设好主人后，在 **访客权限** 里打开 **访客访问权限**，再在 **访客允许使用的工具** 里打开 **电子邮件**。
- **微信机器人**：没有权限控制，每个给它发消息的人都按主人对待，都能用邮件。

::: danger 访客能用邮件，就能动你的邮箱
给访客打开 **电子邮件** 后，群里任何访客都能让数字人读你的邮件、以你的名义发信。只在可信的群里打开。
:::

主人和访客怎么区分、其他工具怎么放开，见 [主人与访客权限](https://hello-halo.cc/docs/digital-humans/permissions.html)。

## 定时处理邮件 {#process-mail-on-a-schedule}

Halo 没有「收到新邮件就触发」的方式。想让数字人定期处理邮件，就给它一个计划任务，让它按时醒来去看邮箱。

1. 打开这位数字人的 **能力与设置 › 身份与指令**，在 **系统提示词** 里写清每次要做什么。比如：「检查今天的未读邮件，按优先级整理成摘要，客户来信单独列出。」
2. 切到 **触发器 › 定时执行**，打开开关。默认每 1 小时一次。
3. 想固定时间，选 **按时间**，比如 **重复** 选 **每天**，时间设成 8:30。只想在工作日运行，再打开 **仅限中国大陆工作日**。
4. 点页面顶部的 **立即运行** 先试一次，在 **工作动态** 里看结果。

- 每次运行都会用模型，消耗 token。间隔越短，花费越多。
- 到点时 Halo 要在运行，电脑要开着。
- 想让它把摘要发给你，见 [通知与主动推送](https://hello-halo.cc/docs/digital-humans/notifications.html)。

计划任务的更多选项见 [运行计划与触发方式](https://hello-halo.cc/docs/digital-humans/triggers.html#schedule)。

## 遇到问题 {#troubleshooting}

### 数字人说它没有邮件工具

- 你可能在普通工作区会话里提问。邮件只在数字人聊天里可用，去 **数字人** 打开一位数字人再说。
- **设置 › 消息通道 › 电子邮件** 的 **已启用** 没打开。
- 这位数字人的 **电子邮件** 被关掉了，见 [为数字人打开电子邮件](#enable-for-digital-human)。
- 通过机器人提问的人是访客，见 [机器人里的邮件权限](#im-permission)。

### 测试通过了，但数字人读不了邮件

**测试** 只检查发信，读信走的是同一地址的 993 端口。逐项确认：

- 邮箱网站上已经开启 IMAP 服务。很多邮箱默认只开 SMTP。
- 你的邮箱收信服务器和发信服务器是同一个地址。不是的话，Halo 目前读不了这个邮箱。公司邮箱可以问 IT。

### 测试失败，错误里有 Invalid login、Authentication failed 或 535

用户名或密码不对。确认 **用户名** 是完整邮箱地址，**密码** 填的是授权码，不是登录密码。必要时在邮箱网站上重新生成一个。

### 测试失败，错误里有 ETIMEDOUT 或 ECONNREFUSED

连不上服务器。检查 **SMTP 主机** 和 **SMTP 端口** 是否和服务商给的一致，网络或防火墙是否拦了这个端口。

### 错误里有 self signed certificate 或 unable to verify the first certificate

Halo 连接邮件服务器时不校验证书链，所以这类错误多半是加密方式和端口没对上。465 端口一般要打开 **使用 SSL/TLS**，587 端口一般关着。

### 测试按钮是灰的

**电子邮件** 卡片的 **已启用** 还没打开。打开后再点 **测试**。

### 看不到日历工具，或日历报错 CalDAV … failed: HTTP …

没有日历工具，说明 **高级 › CalDAV URL** 是空的。报 HTTP 错误，多半是地址不对。向服务商或 IT 确认准确的 CalDAV 地址，以及占位符替换后的地址是否正确。

### 改了邮箱设置，数字人还在用旧的

在这位数字人的页面点 **更多 › 重启智能体**，再发一条消息试试。

## 下一步 {#next-steps}

- [通知与主动推送](https://hello-halo.cc/docs/digital-humans/notifications.html)：让数字人干完活主动告诉你，发邮件或推送到聊天
- [主人与访客权限](https://hello-halo.cc/docs/digital-humans/permissions.html)：决定群里谁能让数字人用邮件和其他工具
- [运行计划与触发方式](https://hello-halo.cc/docs/digital-humans/triggers.html)：让数字人每天定时整理邮箱
