命令行(开发者预览)
foldmail 命令:当前状态、命令、选项、规则文件和退出码。
开发者预览。
foldmail不包含在 FOLD App 中。它目前是从 FOLD 源代码构建的版本,用于开发和测试。它使用自己的本地数据存储,而不是 FOLD App 的数据(macOS 沙盒将后者保存在 App 的容器中)。因此,命令行看不到你在 App 中的邮件,它放入队列的邮件也不会由 App 发送。它的消息和帮助文本目前为德语。
本页描述该预览版目前的功能。在命令行正式推出之前,命令、选项和输出都可能发生变化。
命令
| 命令 | 作用 |
|---|---|
foldmail accounts | 列出账户 |
foldmail mailboxes --account <name> | 列出某个账户的文件夹,以及未读数和总数 |
foldmail search <query> | 使用搜索语法进行搜索;list 是其别名 |
foldmail read <id> | 显示一封邮件;--headers 会省略正文。如果本地没有存储正文,则显示预览 |
foldmail flag <id…> --add <flag> --remove <flag> | 设置或移除标记和标签,例如 \Seen、\Flagged 或 important;两个选项都可以重复使用 |
foldmail delete <id…> | 从本地存储中移除邮件;必须明确指定 ID |
foldmail compose --from <addr> --to <addr> | 构建邮件并将其写入标准输出 |
foldmail send --account <name> --from <addr> --to <addr> | 与 compose --enqueue 相同:将邮件放入发件箱 |
foldmail outbox list --account <name> | 列出发件箱 |
foldmail outbox cancel <id> | 将一封等待中的邮件从发件箱中撤回 |
foldmail filter run --rules <file> | 运行规则文件;除非指定 --apply,否则只做预览 |
foldmail help | 显示帮助;不带参数运行 foldmail 也会显示帮助 |
命令行本身不发送邮件。send 和 compose --enqueue 只会将邮件放入命令行的发件箱;foldmail 不会投递它,FOLD App 也不会读取该发件箱。内置帮助中的示例仍使用 fold;实际命令是 foldmail。
选项
| 选项 | 适用于 | 含义 |
|---|---|---|
--json | 全部 | 以 JSON 输出(带缩进、键已排序、日期采用 ISO 8601)。该结构尚未版本化 |
--quiet | 全部 | 只输出 ID,或只输出已更改邮件的数量 |
--limit <n> | search | 最大结果数,默认为 100 |
--offset <n> | search | 跳过前 n 个结果 |
--account <name> | mailboxes、send、compose --enqueue、outbox list | 账户显示名称或地址 |
--headers | read | 仅邮件头 |
--add、--remove <flag> | flag | 要设置或移除的标记或标签 |
--from、--to、--cc、--bcc、--subject、--body | compose、send | 邮件字段;--to、--cc、--bcc 可以重复使用。不带 --body 时,其余参数构成正文 |
--enqueue | compose | 放入队列,而不是输出 |
--delay <seconds> | send、compose --enqueue | 发送前等待的时间,作为撤销时限 |
--rules <file> | filter run | JSON 格式的规则文件 |
--apply | filter run | 应用规则,而不是预览 |
在命令行中,account: 和 from-account: 按账户显示名称或地址筛选。in: 在这里同样无效果。
请将查询作为一个带引号的参数传入。以减号开头的单独参数会被解读为选项并被丢弃,因此请写成 foldmail search 'from:anna -is:read',或者在以减号开头的查询前加上 --:foldmail search -- '-is:read'。
规则文件
filter run 读取的规则与 App 的过滤规则结构相同,以 JSON 编写:
{
"schemaVersion": 1,
"rules": [
{
"name": "Newsletters",
"match": "from:[email protected]",
"actions": [{ "type": "markRead" }, { "type": "addFlag", "flag": "newsletter" }],
"stopOnMatch": false
}
]
}
操作类型:markRead、markUnread、addFlag 和 removeFlag(带 flag)、delete、move(带 mailbox)、forward(带 to,一个列表)以及 autoReply(带 body)。使用 --apply 时,包含 move、forward 或 autoReply 的规则文件会在发生任何更改之前被拒绝;预览仍会显示其匹配项。
退出码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 一般错误,例如无法打开存储、不支持某个搜索运算符(has:attachment)、邮件正文或附件不可用,或发件箱条目已无法取消 |
| 2 | 用法错误:未知命令、缺少选项或选项值、规则文件无法读取、查询或邮件 ID 无效 |
| 3 | 未找到任何内容:结果为空、邮件或文件夹未知,或没有规则匹配 |
| 4 | 邮件数据不完整或无法读取 |
如果命令行存储中的某个账户使用 Fortress 模式,foldmail 会拒绝运行并以 1 退出,因此它绝不会将未加密的数据写入加密的存储。
示例
foldmail search 'from:anna is:unread' --json
foldmail search 'is:unread' --quiet | xargs foldmail flag --add '\Seen'
foldmail compose --from [email protected] --to [email protected] --subject Hi --body 'Test' > mail.eml
foldmail filter run --rules ~/rules.json
foldmail filter run --rules ~/rules.json --apply