name: email description: 通过Himalaya CLI管理电子邮件。当用户想要读取、发送、搜索或组织邮件时使用。触发词包括“email”、“inbox”、“send email”、“check mail”、“reply to”、“forward”,或提及Gmail、Outlook、iCloud、Proton Mail。
电子邮件管理
使用Himalaya CLI管理电子邮件 - 一个强大的命令行邮件客户端,支持IMAP、SMTP、Maildir和Notmuch后端。
代理使用模式(高级用户模式)
当将此技能作为代理使用时,通过execute_command运行命令。推荐以下模式:
-
**始终使用
--output json**当需要解析结果(主题、发件人、ID)时。示例:himalaya envelope list --folder INBOX --page-size 20 --output json | jq '.[] | {id, subject, from, date}' -
非交互式发送:
message write打开$EDITOR。对于自动化,将完整的RFC风格消息通过管道传输到himalaya template send(如果可用),或使用临时文件:echo -e "To: recipient@example.com
Subject: Subject
Body text" | himalaya template send
如果`template send`不可用,使用`himalaya message write --to "recipient" --subject "Subject"`并注意它可能会打开编辑器—检查您版本的`himalaya --help`。
3. **提取消息ID**用于后续操作:`himalaya envelope list --output json | jq -r '.[].id'`
4. **批量操作**:将多个ID传递给移动/删除:`himalaya message move <id1> <id2> <id3> --folder "Archives"`
5. **操作前检查**:如果用户有多个账户或文件夹,首先运行`himalaya account list`和`himalaya folder list`。
6. **使用`--account <name>`**当用户有多个账户时(例如,`himalaya --account work envelope list`)。
## 前提条件检查
在任何电子邮件操作之前,验证Himalaya已安装和配置:
```bash
# 检查是否安装
which himalaya
# 检查是否配置(列出账户)
himalaya account list
如果未安装 → 指导通过安装 如果无账户 → 指导通过账户设置
安装
预构建二进制文件
curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | PREFIX=~/.local sh
macOS (Homebrew)
brew install himalaya
Arch Linux
pacman -S himalaya
Cargo (任何操作系统)
cargo install himalaya --locked
其他方法
直接引导用户到:https://github.com/pimalaya/himalaya#installation
账户设置
推荐方法:使用Himalaya的内置向导自动发现设置。
交互式设置(最简单)
# 首次设置 - 向导自动启动
himalaya
# 或配置特定账户
himalaya account configure <账户名称>
向导将:
- 询问电子邮件地址
- 自动发现IMAP/SMTP设置
- 提示输入密码(安全存储在系统密钥环中)
- 测试连接
提供商特定说明
| 提供商 | 特殊要求 |
|---|---|
| Gmail | 需要应用密码或OAuth 2.0设置 |
| Outlook | 使用密码或OAuth 2.0 |
| iCloud | IMAP登录仅为用户名(非完整电子邮件) |
| Proton Mail | 需要本地运行Proton Bridge |
💡 提示:许多提供商使用相同的应用特定密码用于电子邮件和日历。在pass中以一致命名存储凭据(例如,google/app-password、icloud/app-password)以在电子邮件和日历技能中重用。对于多个账户,使用分层结构(例如,google/personal/app-password、google/work/app-password)—/创建文件夹以保持组织。
有关详细提供商配置,请参阅references/providers.md
常见操作
列出电子邮件
# 列出INBOX中的最近电子邮件
himalaya envelope list
# 从特定文件夹列出
himalaya envelope list --folder "Archives"
# 使用特定账户列出
himalaya envelope list --account gmail
# 分页结果
himalaya envelope list --page 2 --page-size 20
读取电子邮件
# 通过ID读取
himalaya message read <id>
# 以纯文本读取(无HTML)
himalaya message read <id> --plain
# 仅读取头部
himalaya message read <id> --headers
发送电子邮件
# 撰写新电子邮件(打开$EDITOR)
himalaya message write
# 发送预填充字段
himalaya message write --to "recipient@example.com" --subject "Hello"
# 回复消息
himalaya message reply <id>
# 全部回复
himalaya message reply <id> --all
搜索电子邮件
# 注意:`envelope list`不支持`--query`标志。
# 任何尾随参数都被解释为搜索查询。
# 首先放置选项(例如,--folder/--output/--page-size),然后是查询令牌。
# 注意:没有`--max-size`标志。要限制结果,使用`--page-size`(和可选的`--page`)。
# 基本过滤器(直接Himalaya查询语法)
# 按主题搜索
himalaya envelope list --folder INBOX subject "meeting"
# 按发件人搜索
himalaya envelope list --folder INBOX from "boss@company.com"
# 未读(未看)
himalaya envelope list --folder INBOX not flag seen
# 按精确日期搜索(YYYY-MM-DD或YYYY/MM/DD)
himalaya envelope list --folder INBOX date 2026-02-09
# 结合过滤器与and/or(将表达式引号括起以保持为一个参数)
himalaya envelope list --folder INBOX "from client@example.com and subject invoice and not flag seen"
# ---------------------------------------------------------------------------
# Shell级助手(LLM有用模式)
# ---------------------------------------------------------------------------
# 计算今天在INBOX中收到的电子邮件数
# 1) 列出所有信封
# 2) 跳过头部行
# 3) 筛选今天的ISO日期字符串
# 4) 计算行数
TODAY=$(date +%Y-%m-%d)
himalaya envelope list --folder INBOX \
| tail -n +3 \
| grep "${TODAY}" \
| wc -l
# 计算INBOX中未读电子邮件数
himalaya envelope list --folder INBOX not flag seen \
| tail -n +3 \
| wc -l
# 显示INBOX中最新N封电子邮件(用于快速检查)
# 使用分页标志(非`tail`)可靠地仅获取N条消息。
himalaya envelope list --folder INBOX --page 1 --page-size 10
# 显示最新N封未读电子邮件
himalaya envelope list --folder INBOX --page 1 --page-size 10 not flag seen
管理文件夹
# 列出文件夹
himalaya folder list
# 创建文件夹
himalaya folder create "Projects/ClientA"
# 移动消息到文件夹
himalaya message move <id> --folder "Archives"
# 复制消息
himalaya message copy <id> --folder "Important"
管理标志
# 标记为已读
himalaya flag add <id> seen
# 标记为未读
himalaya flag remove <id> seen
# 星标/标记消息
himalaya flag add <id> flagged
# 删除(移动到垃圾箱)
himalaya message delete <id>
切换账户
# 对任何命令使用特定账户
himalaya --account work envelope list
himalaya --account personal message write
检查所有账户
# 列出配置的账户
himalaya account list
# 检查各账户未读
for account in $(himalaya account list --output json | jq -r '.[].name'); do
echo "=== $account ==="
himalaya --account "$account" envelope list --page-size 5 not flag seen
done
输出格式
Himalaya支持JSON输出用于脚本:
# JSON输出
himalaya envelope list --output json
# 用jq解析
himalaya envelope list --output json | jq '.[].subject'
故障排除
连接问题
# 启用调试日志
RUST_LOG=debug himalaya envelope list
# 完整跟踪
himalaya --debug envelope list
常见错误
| 错误 | 解决方案 |
|---|---|
| “Account not found” | 运行himalaya account configure <name> |
| “Authentication failed” | 检查密码/应用密码,如有需要重新生成 |
| “Connection refused” | 检查IMAP/SMTP主机和端口设置 |
| “Certificate error” | 检查配置中的TLS设置 |
重置配置
配置文件位置: ~/.config/himalaya/config.toml(或$XDG_CONFIG_HOME/himalaya/config.toml)
# 查看当前配置
cat ~/.config/himalaya/config.toml
# 手动编辑配置
$EDITOR ~/.config/himalaya/config.toml
# 交互式重新配置账户
himalaya account configure <name>
# 使用替代配置文件
himalaya --config /path/to/custom/config.toml envelope list
环境变量覆盖:
export HIMALAYA_CONFIG=~/.config/himalaya/custom-config.toml
himalaya envelope list
撰写电子邮件
Himalaya使用您的$EDITOR进行撰写。格式为:
To: recipient@example.com
Cc: other@example.com
Subject: 您的主题在此
您的消息正文在此。
添加附件(MML语法)
搜索电子邮件
Himalaya的搜索使用位置查询表达式,而非--query标志。
日期过滤器
# 严格在给定日期后的信封
himalaya envelope list "after 2026-02-10"
# 严格在给定日期前的信封
himalaya envelope list "before 2026-02-10"
# 所有今天收到的电子邮件(从本地日期)
himalaya envelope list "after $(date +%Y-%m-%d)"
其他常见过滤器
# 来自特定发件人
himalaya envelope list "from me@example.com"
# 发送给特定收件人
himalaya envelope list "to someone@example.com"
# 主题包含单词
himalaya envelope list "subject report"
# 结合过滤器(AND语义)
himalaya envelope list "from me@example.com and subject report"
快速参考
| 任务 | 命令 |
|---|---|
| 检查收件箱 | himalaya envelope list |
| 读取电子邮件 | himalaya message read <id> |
| 撰写新邮件 | himalaya message write |
| 回复 | himalaya message reply <id> |
| 搜索 | himalaya envelope list "from me@example.com" |
| 标记已读 | himalaya flag add <id> seen |
| 删除 | himalaya message delete <id> |
| 移动 | himalaya message move --folder SOURCE TARGET <id...> |
- 对于提供商特定设置,请参阅references/providers.md
- 官方文档:https://github.com/pimalaya/himalaya