是否可以在非电子邮件主机名中包含注释?

时间:2011-01-29 02:26:18

标签: email hosts

我正在研究java中更完整的电子邮件验证工具,并且在“用户名”和“地址”部分的电子邮件中嵌入了评论的有趣功能。

http://www.dominicsayers.com/isemail/中的以下代码段可以说明电子邮件中的评论。

注释是括号括起来的文本(如下所示)。这些都没问题,但不构成地址的一部分。换句话说,发送到first.last@example.com的邮件将转到与第一个(a).last(b)@example(c).com(d)相同的位置。奇怪但真实。

  • 这样的电子邮件真的存在吗?
  • 是否有可能形成这样的主机?

我尝试输入一个网址,例如“google(ignore).com”,但是firefox和其他一些浏览器都失败了,我想知道这是因为它错了还是因为他们不知道主机名注释?

2 个答案:

答案 0 :(得分:1)

原始电子邮件RFC RFC 822确实允许该语法 - addr-spec内的评论。但是,当您通过RFC 2822 ... 10年前修改RFC时,不希望使用像您要使用它们的评论。它仍然在当前版本RFC 5322中标记为已过时。使用该语法发出任何东西都没有好借口。

地址解析器应该是向后兼容的,以便涵盖所有可能的情况,包括10年不推荐的位,就像你试图利用的那样。但我敢打赌,许多接收邮件代理的人都无法正确解析这些评论。因此,即使您可能在技术上通过RFC的"obsolete addressing"部分找到了漏洞,但在实践中它不太可能对您有所帮助。

对于HTTP,语法规则与电子邮件语法规则不同。如您所见,RFC 822的评论部分不适用。

答案 1 :(得分:0)

仅仅因为你可以在规范中做到这一点,并不意味着你应该这样做。例如,Gmail不接受该地址的评论格式。

其次,(到最后一点),电子邮件地址允许使用paren-comments并不意味着它们适用于URL。

最后,我的建议是:我会根据您的要求定制验证器的完整性。如果您正在编写新的MTA(邮件传输代理),则可能必须完成所有操作。如果您正在为用户输入编写验证器,请保持简单:

  • 寻找一个@,
  • 确保您拥有之前(用户名)和之后(域名)
  • 的内容
  • 确保主机名字符串中有“点”,
  • [额外信用]执行主机名的DNS查找以确保其解析。