邮件管理技能Skill email

这个技能使用Himalaya CLI命令行工具来管理电子邮件,包括读取、发送、搜索、组织邮件等功能。适用于需要高效处理邮件的用户,关键词包括:电子邮件管理、命令行、Himalaya、邮件客户端、IMAP、SMTP、邮件搜索、自动化工具。

DevOps 0 次安装 0 次浏览 更新于 3/15/2026

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运行命令。推荐以下模式:

  1. **始终使用--output json**当需要解析结果(主题、发件人、ID)时。示例:

    himalaya envelope list --folder INBOX --page-size 20 --output json | jq '.[] | {id, subject, from, date}'
    
  2. 非交互式发送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 <账户名称>

向导将:

  1. 询问电子邮件地址
  2. 自动发现IMAP/SMTP设置
  3. 提示输入密码(安全存储在系统密钥环中)
  4. 测试连接

提供商特定说明

提供商 特殊要求
Gmail 需要应用密码或OAuth 2.0设置
Outlook 使用密码或OAuth 2.0
iCloud IMAP登录仅为用户名(非完整电子邮件)
Proton Mail 需要本地运行Proton Bridge

💡 提示:许多提供商使用相同的应用特定密码用于电子邮件和日历。在pass中以一致命名存储凭据(例如,google/app-passwordicloud/app-password)以在电子邮件和日历技能中重用。对于多个账户,使用分层结构(例如,google/personal/app-passwordgoogle/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...>