root @ [127.1]是一个语法上有效的电子邮件地址吗?

时间:2011-04-01 15:09:36

标签: email standards email-validation rfc rfc822

root@[127.1]是一个语法上有效的电子邮件地址吗?

为什么呢?为什么不呢?

5 个答案:

答案 0 :(得分:16)

您需要查看RFC 5322,第3.4.1节。

  

此规范是一个      Request For Comments(RFC)2822的修订版,它本身已被取代      Request For Comments(RFC)822,“ARPA格式标准”      互联网短信“,更新它以反映当前的做法和      包含在其他RFC中指定的增量更改。

我通过http://isemail.info/运行您提供以下信息的电子邮件地址:

一般结果是该地址仅在RFC 5322的广义定义下有效。否则无效。

具体诊断域文字不是有效的RFC 5321地址文字

以下是电子邮件RFC的相关段落:

  

domain-literal = [CFWS]“[”*([FWS] dtext)[FWS]“]”[CFWS]

(RFC 5322第3.4.1节)

答案 1 :(得分:7)

这取决于您是表示标题中的地址(RFC 5322)还是信封地址(RFC 5321),在后一种情况下,是否包含<&gt ;,<>之间的所有内容(即源路由),或只是邮箱。

根据RFC 5322,有效,但RFC 5322允许加载等有趣的内容,例如评论! unicorns!蛋糕! ponies!。它可以使用Perl的“常规”表达式解析它们:Mail::RFC822::Address

根据RFC 5321 Section 4.1.3语法上无效,因为语法只允许使用1.2.3.4格式的地址文字或格式为“standard-tag:”的前缀(例如{{ 1}})。我假设你的意思是“邮箱”,即<>之间的所有内容。但不包括源路线。

我使用后一种定义,因为如果我的SMTP服务器不接受它,电子邮件地址就不太好了。 (是的,这是一个可怕的定义,但我认为互联网不会很快离开SMTP。)

(此外,还有RFC 5336 a.k.a.“UTF8SMTP”。我不知道有谁使用它。)

答案 2 :(得分:3)

不,RFC2822允许将IP地址用作域,但您必须使用有效的IP地址。

您的示例应为root@[127.0.0.1]

答案 3 :(得分:2)

根据你在标签中提到的RFC-822,是的,它是语法上有效的,因为语法允许它。这些是相关规则:

 addr-spec   =  local-part "@" domain        ; global address    

 domain      =  sub-domain *("." sub-domain)

 sub-domain  =  domain-ref / domain-literal

 domain-literal =  "[" *(dtext / quoted-pair) "]"

 dtext       =  <any CHAR excluding "[",     ; => may be folded
                 "]", "\" & CR, & including
                 linear-white-space>

答案 4 :(得分:-3)

没有

如果您将地址拆分为两个部分,即本地(在@符号之前)和域(在@符号之后),电子邮件有效性有一些广泛的定义。本地部分可能是字母数字,带有以下特殊字符'。',' - '和'_',本地部分不能包含连续的句点。

域部分必须满足由方括号括起的主机名或IP地址的定义。

由于您的示例不符合有效主机名(foo.bar)的要求,并且它不包含由方括号括起的有效IP地址,因此它不是有效的电子邮件地址。

查看以下电子邮件验证码(减去IP地址验证位),这将验证e-mail address。这可以很容易地改装以使用ip-address域名。