sed -i 's/var(--brand)/#1a73e8/g' dist/mail/*.html
grep -rn 'var(--' dist/mail/ || echo OK

模板把主题色写成 var(--brand),新版客户端正常,单位里的 Lotus Notes 打开后按钮和链接全变成黑色,品牌色完全丢失。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:CSS 变量是较新的特性,邮件客户端的内置渲染器不认识 var(),整条声明被丢弃,颜色退回默认黑。邮件环境没有 polyfill 可用。

「邮件 CSS 变量」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

处理上按这个顺序:颜色值一律写成字面量,构建时把变量替换掉再产出模板;需要多套配色时用构建脚本生成多份模板,别指望客户端运行时计算;用不支持变量的客户端各打开一次作为回归。

确认没问题再收工,旧客户端里按钮保持蓝色,构建产物里搜不到 var(--。

作者 9823189