SELECT email FROM users WHERE email REGEXP '^[^@]+@[^@]+$' AND email NOT LIKE '%.%';
注册量涨了三千,邮件退信率从 0.3% 涨到 12%,抽样看库里有 a@b、x@localhost、user@.com 这类地址,全都过了校验。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:正则只要求 @ 前后各有一个以上字符,域名部分没限制点号和顶级域。这类地址能入库但投递不了,退信会拉低发信域名信誉。前端和后端用的是同一条宽松正则,两边都没兜住。
「邮箱正则校验」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
处理上按这个顺序:把域名部分限制成至少一个点 顶级域 2 到 24 个字母;入库前再做一次长度和连续点号检查;对存量数据跑一遍正则 把不合法的标出来让运营确认;用 a@b 和 user@.com 各注册一次验证被拒。
确认没问题再收工,用 a@b 注册返回 400 存量统计里这类地址数量降到 0。
