共1个答案

小编典典

请参阅RFC 5322:Internet 消息格式,以及在较小程度上,RFC 5321:简单邮件传输协议

RFC 822也涵盖电子邮件地址,但主要处理其结构:

 addr-spec   =  local-part "@" domain        ; global address     
 local-part  =  word *("." word)             ; uninterpreted
                                             ; case-preserved

 domain      =  sub-domain *("." sub-domain)     
 sub-domain  =  domain-ref / domain-literal     
 domain-ref  =  atom                         ; symbolic reference

和往常一样,维基百科有一篇关于电子邮件地址的不错的文章:

电子邮件地址的本地部分可以使用以下任何 ASCII 字符:

  • 大写和小写拉丁字母AtoZato z;
  • 数字09;
  • 特殊字符!#$%&'*+-/=?^_~`;
  • dot
    .,前提是它不是第一个或最后一个字符,除非被引用,并且它不连续出现,除非被引用(例如John..Doe@example.com,不允许但"John..Doe"@example.com被允许);
  • 空格和"(),:;<>@[\]字符是有限制的(它们只允许在带引号的字符串中,如下文所述,此外,反斜杠或双引号必须以反斜杠开头);
    * 允许在本地部分的任一端带括号的注释;例如john.smith(comment)@example.com(comment)john.smith@example.com都等价于john.smith@example.com

除了 ASCII 字符之外,从 2012 年起,您还可以使用上述国际字符 U+007F,编码为 UTF-8,如RFC 6532 规范中所述并在Wikipedia上进行了解释。请注意,截至
2019
年,这些标准仍被标记为已提议,但正在缓慢推出。本规范中的更改实质上将国际字符添加为有效的字母数字字符(atext),而不会影响允许和受限特殊字符(如!#和)的规则@:

有关验证,请参阅使用正则表达式验证电子邮件地址

domain部分定义如下

用于协议的 Internet 标准(征求意见)要求组件主机名标签只能包含 ASCII 字母(az不区分大小写的方式)、数字09连字符
( -)。RFC 952中主机名的原始规范要求标签不能以数字或连字符开头,也不能以连字符结尾。但是,后续规范 ( RFC
1123
)
允许主机名标签以数字开头。不允许使用其他符号、标点符号或空格。

2022-03-03