Tempcase

HTML 预览不是验收:
为事务邮件建立证据包

看到排版正常,只完成了一项观察。把模板版本、测试输入和收到的内容放回同一轮 case,下一位接手的人才能复现,而不是猜测。

阅读约 14 分钟 模板证据

2026 年,模板改得更快,截图仍然不够

注册验证信往往不只一个版本:文案换了、语言多了、组件也更新了。2026 年的模板迭代里,团队可能同一天修改按钮、变量和有效期提示。一张“看起来正常”的收件截图,却没有告诉你它来自哪个构建、用了什么输入。

等到问题被转交,测试地址可能已经过期,开发也无法复现那个超长用户名。邮件测试证据包不是多存几张图,而是保留足以重建这次观察的最少材料。先记录输入与版本,再保存结果,通常比事后追问更省时间。

先划清三层结论

事务邮件验收应把下面三件事分开写。“已到达”不能替代“内容正确”,“网页里正常”也不能替代“目标客户端通过”。

一次观察,能支持多大范围的结论
层次可以确认不能顺带确认
邮件到达这次请求对应的邮件进入了当前收件箱。验证码可用、链接有效,或所有用户都能收到。
网页预览当前浏览器与预览器策略下,收到的正文如何显示。所有邮箱客户端的排版、图片和深色模式一致。
目标客户端验收指定客户端、版本与设置下的观察结果。未测试的平台,以及认证等业务逻辑一定正确。

结论可以写成:“预发构建 A 的中文验证信已到达;网页预览中按钮可见;桌面邮件客户端尚未验证。”这比一句“邮件正常”更准确。

最小证据包:五项材料就能开始

以每轮测试的 case 编号建目录,不用真实邮箱或验证码命名文件。建议至少留下:

  • 模板版本:模板标识、提交或构建编号、语言版本。
  • 测试变量:用户名、产品名、缺省字段等脱敏输入,保留原有长度和类型。
  • 请求记录:触发时间、时区、请求编号、测试环境和返回结果。
  • 邮件内容:脱敏 HTML、可取得的纯文本,以及必要元信息。
  • 观察结果:预期、实际、截图、观察环境和未测试范围。

模板版本记录须来自发送系统或发布记录。收件页没有展示版本,并不代表能从邮件样式可靠推断;无法取得时标成“未知”,不要补猜。

用注册验证信做一次记录

先固定输入,再区分内容与排版

例如 case signup-zh-longname:在预发环境使用专门构造的长用户名,复制一个临时邮箱地址触发注册,记录请求编号与时间。发出后不要立刻修改模板,否则收到的结果难以归属。

邮件到达后,先看变量是否正确替换,再看显示效果。如果正文还留着 {{display_name}},优先查变量传递或模板编译;如果名字正确但顶出按钮,再查宽度、换行和布局。两者可以同时存在,但应分别描述。

接着使用同一模板版本,换成短用户名重测。只改变一个输入,更容易判断是长文本触发,还是所有邮件都有问题。验证码是否被业务系统接受,另用受控测试账号验证,不由截图下结论。

截图之外,保存正文与必要元信息

截图保留视觉现象,却会遗漏隐藏文本、实际链接与纯文本部分。可以保存收件页提供的 HTML 源码,并从发信侧或支持导出的目标客户端取得纯文本、原始邮件;不要把预览器生成的页面 DOM 当作原始 MIME 邮件。

元信息记录主题、脱敏收件地址、发件地址、观察到的收件时间,以及实际可取得的 Message-ID。邮件头的 Date 与本地观察时间含义不同;各时间注明来源和时区,不能直接当作端到端延迟。

脱敏不应把问题一起抹掉

移除真实验证码、访问 token、个人信息和认证链接参数。长名字换成等长测试字符,保留导致异常的空值、标点与结构。HTML 附件仍是不可信内容,应以文本检查或在隔离环境预览,不要直接运行收到的文件。

图片不出现,先判断是哪一种

同样是空白图片,修复方向可能完全不同。先检查图片地址形式,再记录加载条件。

  • 远程资源:核对 HTTPS 地址、响应状态、访问权限与资源是否仍在。客户端可能默认阻止远程图片;不要为测试上传带身份参数的图片地址到第三方工具。
  • CID 内嵌图片:cid: 引用依赖邮件里的 MIME 附件。Tempcase 临时邮箱不保存附件字节,此类图片无法显示,不能单凭这里的缺图判定模板错误。
  • 预览器限制:脚本、表单或危险资源可能被安全策略移除。需与原始正文及目标客户端结果对照,不能为了“显示完整”关闭隔离。

缺陷单写“CID 图片在当前预览器不可用”与“远程图片返回错误”是两种不同证据,别统一归成“邮件图片坏了”。

HTML 与纯文本:同一含义,不同结构

HTML 邮件测试不能只检查漂亮的一面。若系统发送多部分邮件,纯文本也应传达必要信息;某些收件环境不会展示富文本。

用同一组输入逐项对照两个正文部分
检查项HTML 部分纯文本部分
身份与目的品牌、标题、操作说明可辨认。不用颜色和图标,也能读懂发信目的。
验证码与期限数字完整、不被遮挡,期限明确。数字相同,保留前导零和期限说明。
操作入口按钮目标符合预期环境。需要链接时提供可辨认的完整入口。
动态变量长文本不溢出,缺省值合理。不残留占位符或 HTML 标签。
信息顺序视觉层级清楚。按自然阅读顺序组织,不依赖多列布局。

拿不到纯文本时,标记“未取得,待发信侧补充”。不要把 HTML 去标签后的结果冒充邮件实际发送的纯文本部分。

走向真实客户端,先写清测试环境

网页预览适合快速检查变量与基本排版。正式验收则应按受众选择真实客户端:例如团队常用的桌面客户端、手机邮件应用和网页邮箱,不必无目的地追求覆盖所有组合。

每个结果至少记录系统、客户端及版本、浅色或深色模式、远程图片开关、显示宽度与缩放比例。浏览器窄屏预览不等于手机邮件应用;字体回退、CSS 支持和自动调整都可能不同。

跨客户端比较应尽量使用同一版本、同组输入触发的受控测试邮件。不能把两封经过不同变量处理的邮件,简单当成客户端差异。

比较模板差异,一次只变一个条件

准备四组有目的的输入:长文本、缺省值、不同语言长度、窄屏。先用基准输入跑旧版与新版,再逐组替换;截图固定宽度和缩放,避免把视口变化当成模板回归。

  • 长文本:用户名、产品名和订单标识是否推动容器或遮住操作。
  • 缺省值:可选字段为空时,是否留下孤立标点和空白区域。
  • 语言长度:法语、葡语等长句是否挤压按钮;日语断行是否破坏语义。
  • 窄屏:正文与代码是否横向溢出,关键操作是否仍能辨认。

发现差异后保留输入差分和正文差分。仅有像素差分容易被字体抗锯齿干扰,不能代替对内容含义的检查。

一份可以交接的缺陷单

接手的人应当不需要访问你的临时收件箱,也能重做观察。下面这样的简短记录,比一长串聊天截图更有用:

示例:长用户名把验证按钮推到容器外

复现输入
预发环境;模板 signup-v4,构建 test-218;中文;用户名为 48 个测试字符。
复现步骤
新建测试地址 → 提交注册 → 按请求编号定位邮件 → 以 360px 宽预览。
预期 / 实际
预期正文换行且按钮完整;实际按钮右侧被裁切。短用户名对照组未复现。
观察环境
填写实际浏览器或客户端版本、系统、缩放和图片设置;其他客户端尚未验证。
附件与边界
脱敏变量、请求摘要、HTML、纯文本和截图;未执行真实认证链接,业务有效性未验证。

关闭缺陷时追加复测版本与结果,不覆盖原始失败证据。如果为复现做了脱敏替换,也注明替换方式及是否仍能复现。

在临时地址过期前,整理好证据

Tempcase 临时地址默认有效期为 3 小时;有效期内续期,每次请求追加 3 小时,单个地址累计最长 24 小时。上限限制仍然适用,不能靠反复续期无限保留。

需要交接的内容应在过期前按团队策略安全保存。续期只是给当前测试多留时间,不是归档承诺;到期后地址与邮件清除,无法恢复。换一个地址也会销毁旧地址,不要在整理附件前操作。

要跨天持续收信,可以通过免密登录创建长期转发别名,把来信转到真实邮箱。但长期转发和有限存档同样不能替代你自己的缺陷记录与保留策略。

下一步:把结论带回下一轮测试

已经收到邮件,就按邮件模板预览工作台固定输入复测,把结果补进同一个证据包。若邮件尚未出现,先进入验证码到达排查核对地址、请求与投递记录,不要从“没有截图”跳到“模板出错”。

涉及重复触发与乱序邮件时,可继续阅读验证码重发测试。证据包的价值,不在附件有多少,而在每一项结论都能追到对应的输入与观察。

下一封信,留下可复现的记录。

从一个干净地址开始;把输入、版本与结果一起带走。