项目背景
在现代互联网系统中,电子邮件(Email)几乎是所有系统最基础的身份标识之一。无论是注册登录、找回密码、通知提醒、营销系统、企业 OA 系统,甚至微服务之间的消息通知,邮箱地址都扮演着重要角色。
典型应用场景包括:
- 用户注册校验
- 找回密码
- 发送验证码
- 企业用户认证
- CRM 系统数据录入
- 批量营销系统数据清洗
如果邮箱地址校验不严格,可能会带来:
- 数据污染(无效邮箱存入数据库)
- 邮件发送失败率高
- 被恶意构造输入攻击
- 邮件服务器压力增加
- 安全风险(例如注入攻击)
因此,实现一个严谨、可扩展、可教学的邮箱校验工具,是非常有意义的。
项目需求
基础需求
实现函数:
func IsValidEmail(email string) bool
判断字符串是否为合法电子邮件地址。
合法邮箱必须满足:
- 非空字符串
- 包含且仅包含一个
@ - 本地部分(local part)合法
- 域名部分(domain part)合法
- 域名必须符合 DNS 规则
- 不允许非法字符
- 长度限制合理
合法示例
[email protected] [email protected] [email protected] [email protected]
非法示例
testexample.com test@@example.com @test.com test@ [email protected] [email protected]
进阶需求
- 支持可配置最大长度
- 支持自定义域名规则
- 返回详细错误信息
- 提供单元测试
- 封装为工具结构体
相关技术
邮箱结构基础知识
标准邮箱结构:
local-part@domain
RFC 5322 标准
电子邮件地址规范由 RFC 5322 定义。
简化规则:
- local 部分允许字母数字和特殊符号
- domain 部分必须是合法域名
- 最大长度 254 字符
- local 部分最大 64 字符

