“user@192.0.2.1”可以是有效的电子邮件地址吗?

Pro*_*sRF 31 email domain-name hostname

我研究了正则表达式并面临一个问题:像这样的电子邮件地址username@192.0.2.1是否有效?

肯定有有效的用户名,但是域呢?它应该只是域名还是主机IP地址也允许?当然,我的意思是任何主机地址,而不仅仅是本地主机。

mta*_*tak 64

不,这不是有效的电子邮件地址。电子邮件地址的主机部分 ( @example.com),可以是 IP 地址而不是域名,但 IP 必须括在括号中,例如:

username@[127.0.0.1]
Run Code Online (Sandbox Code Playgroud)

请参阅RFC 5321 第 4.1.3 节

有时主机不为域名系统所知,并且通信(特别是报告和修复错误的通信)被阻止。为了绕过这个障碍,允许使用地址的特殊文字形式来替代域名。对于 IPv4 地址,这种形式使用四个由点分隔并用括号括起来的小十进制整数,例如 [123.255.37.2],它表示一个 (IPv4) 八位字节序列形式的 Internet 地址。

也就是说,在实践中,像使用这样的 IP 的电子邮件地址会触发垃圾邮件预防措施,因此它不会很实用。但从技术上讲,它是一个有效的电子邮件地址。

  • @johnrom 问题询问`像 username@127.0.0.1 这样的电子邮件地址是否有效`。地址有效(如果 IP 地址上使用了括号)。除非在极其特殊的情况下,否则不可交付;这不影响有效性。如果问题是有效的,那么您在评论中陈述的所有内容都无关紧要。 (4认同)
  • 如果您正在设置自己的邮件系统,那么它可能会很有用。只要您不尝试与任何公共提供商进行互操作。 (3认同)