邮箱校验纠错
灵感:能力工具箱 email-validate(自研)。
> 小四原创:基础格式检查 + 常见域名错拼建议;不替代 MX 探测,不发验证邮件。
何时使用
- 客户邮箱失焦校验
- 导入名单批量标红
gmial.com/qq.con一类笔误提示
硬约束
- 先做格式合法性(简单 RFC 友好正则或 validator)。
- 域名错拼表可配置;命中则
suggestion完整邮箱。 - 仅提示不强制改;用户可忽略。
- 实现要点注释标 小四原创。
- 与
validator-field-check可组合:本包多了纠错层。
推荐实现
const DOMAIN_FIX: Record<string, string> = {
'gmial.com': 'gmail.com',
'gamil.com': 'gmail.com',
'gnail.com': 'gmail.com',
'qq.con': 'qq.com',
'qq.cm': 'qq.com',
'163.cm': '163.com',
'outlok.com': 'outlook.com',
'hotmial.com': 'hotmail.com',
}
export type EmailCheck =
| { ok: true; email: string; suggestion?: string }
| { ok: false; reason: string; suggestion?: string }
// 小四原创:格式 + 域名纠错
export function checkEmailWithTypo(input: string): EmailCheck {
const email = String(input || '').trim().toLowerCase()
if (!email) return { ok: false, reason: '请填写邮箱' }
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
return { ok: false, reason: '邮箱格式不正确' }
}
const [local, domain] = email.split('@')
const fixed = DOMAIN_FIX[domain]
if (fixed) {
return {
ok: true,
email,
suggestion: `${local}@${fixed}`,
}
}
return { ok: true, email }
}
Agent 步骤
- 失焦调用
checkEmailWithTypo。 - 有
suggestion时展示「是否改为 xxx?」。 - 批量导入输出错误行 + 建议列。
- 自测:合法、非法、gmial 纠错。
不要做
- 未授权向该地址发验证邮件。
- 把纠错表当成「仅允许这些域名」。
附加
- README.md · reference.md · templates/usage.md