root@[127.1]
是一个语法上有效的电子邮件地址吗?
为什么呢?为什么不呢?
答案 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域名。