GenMail 能读到哪些邮件,不取决于它本身多聪明,而取决于接入时你把哪些邮箱、哪些文件夹、哪段时间范围交给了它,以及动作开关留在了什么状态。多数人出问题的场景很相似:手上三四个邮箱混在一个账号里,私人邮件和工作邮件放在同一层级,接进来先点了授权,回头才发现私人文件夹也在读取列表里。处理方向是先画边界再动手:邮箱 × 文件夹 × 时间范围定“能读什么”,只读、起草、发送、打标签、归档定“能做什么”,两件事分开设、分别验。
把 GenMail 当成“只看见你允许它看见的文件夹”来处理。私人文件夹、家庭往来、含验证码和账单的目录通常默认排除;读取范围和动作范围要当成两个独立开关,只圈定读取范围不代表动作也被限制。稳妥做法是先只接一个邮箱、只开读取、用一次可复现的列出测试与邮箱未读数对齐,再逐个邮箱和文件夹放开。范围字段名以你所用版本的实际页面为准,拿不准就以日志和列表结果核对,不要凭印象判断。
列清要接几个邮箱、各自哪些文件夹纳入
先把边界画在纸上再动手。打开每个邮箱的文件夹列表,逐个标注,别等接进来以后再回头删。下面这张表可以直接复制到备忘录里填:
| 邮箱 | 文件夹 | 是否纳入 | 纳入原因 |
|------|--------|----------|----------|
| work@ | 收件箱 INBOX | 是 | 客户与内部往来主入口 |
| work@ | Clients | 是 | 按客户分拣的往来 |
| work@ | Personal | 否 | 私人邮件,默认排除 |
| work@ | Archive | 否 | 历史归档,当前不参与 |
| personal@ | 收件箱 | 否 | 暂不接入 |
| 备用邮箱@ | 收件箱 | 待定 | 先确认里面有没有需要处理的信 |
“纳入原因”这一列不是形式。凡是填不出具体原因、只是“以后可能有用”的文件夹,建议先按不纳入处理。私人文件夹、家庭共享目录、购物和账单目录默认排除,等确有处理需求再单独加。同时想清楚时间范围:是只读最近一段时间,还是从接入之日起的新邮件开始读,两者在页面或配置里通常是不同的选项,需要结合你的实际字段确认写法。
把“读取范围”和“动作范围”当成两个开关分别设
只设了读的边界、动作却仍然全开,是这类工具最常见的误配。读取范围决定 GenMail 能看到哪些邮件,动作范围决定它能对这些邮件做哪些操作。前者通常是账号下的文件夹多选、包含和排除列表;后者通常是只读、生成草稿、代发回复、加标签、归档、删除这几类的独立开关,具体命名和分组以你所用版本的实际页面字段为准。
容易混淆的地方有三处。一是“只读”只是不做写入,并不缩小读取的文件夹,圈了十个文件夹再开只读,它照样能看到十个文件夹的内容。二是打标签、归档、标记已读这类操作常被当成“整理”而不被当成动作,但它们已经在改你的邮箱状态,属于写入,需要单独确认是否开启。三是草稿与发送往往不在同一个开关下,允许生成草稿不等于允许代发,检查时把每一项都看一遍。判断原则很简单:先只留读取,动作全部关掉,跑通范围以后再按需要逐个打开。
用一份范围配置骨架做对照
不管产品是页面勾选还是配置文件,都建议自己留一份记录,用来核对页面开关有没有被改动。下面的骨架只是记录格式,字段名以实际产品为准,不要直接当成某个版本的官方配置:
# 仅作记录与核对用,字段名请以实际产品为准
accounts:
- alias: work
address: work@example.com
enabled: true
folders:
include: ["INBOX", "Clients"]
exclude: ["Personal", "Archive"]
time_window:
mode: since_enable # 或 recent_window,按实际选项写
value: 30d
- alias: backup
address: backup@example.com
enabled: false
folders:
include: []
exclude: ["*"]
actions:
read: true
draft_reply: true
send: false
label: true
mark_read: false
archive: false
delete: false
用法是对照检查:页面里启用了几个邮箱,文件里就该有几个 enabled 为 true 的账号;页面里勾了哪些文件夹,include 列表要能一一对上;动作区开着的项,和 actions 下面的布尔值逐个比。任何一边对不上,先改回文件里记录的状态再排查。这份文件不必被产品读取,它的作用是让你在多次调整后还能说清当前边界是什么。
验证:让它列出今天读到的全部邮件
范围设置是否真的生效,用一次可复现的列出来确认。把下面这段指令原样发给 GenMail,时间定义按你的本地时区说明清楚:
请列出你今天(本地时区 00:00 至今)实际读取到的全部邮件,逐条输出:
邮箱别名 | 文件夹 | 邮件唯一 ID | 收件时间 | 发件人 | 主题
要求:
1. 只输出你确实读取过的邮件,不要根据主题或上下文推测补齐。
2. 缺少唯一 ID 的条目,标注“无 ID”并写明来源文件夹。
3. 最后统计各文件夹的条目数量。
拿到结果后与邮箱本身对齐:在网页端或客户端看收件箱未读数与总来信数,逐封比。差异通常来自几类原因——未读数只统计未读,已读邮件不在其中;垃圾邮件、垃圾箱、已归档会话往往不在你纳入的文件夹里;同一次会话里多封回复可能被合并成一条;规则自动归档会把邮件移出你纳入的目录;还有时间边界问题,“今天”的定义是本地时区还是其他时区。把差异逐条归到具体原因上,归不掉的条目说明范围可能没有按预期生效,回到配置对照表检查。
先只接一个邮箱跑通,再逐个增加
接入顺序建议从最小集合开始:一个邮箱、一个文件夹、只开读取、动作全关,用上一步的列出测试确认结果只落在该文件夹内。之后每加一个文件夹或一个邮箱,都重复一遍同样的列出测试,核对点有三个:读到的条目是否只出现在新加的范围内;之前那些文件夹的结果有没有无故变多;动作开关是否仍然保持你设定的状态。如果页面支持查看运行日志,顺便看一眼日志里记录的来源文件夹,和列表结果是否一致。
出现串读,也就是读到了没纳入的文件夹时,按下面的顺序回退,每一步都重跑一次列出测试:先关掉全部动作开关,避免范围不清时产生写入;再移除最近新加的那一个文件夹;仍然异常,就移除最近新加的邮箱;最后退回单邮箱、单文件夹、只读的基线状态。回退是为了把变量减到一个,不要同时改多个位置。等基线恢复正常,再按“一次只加一个”的节奏重来,这样每次出问题都能定位到是哪一个改动引入的。