2

I am working on a more complete email validator in java and came across an interesting ability to embed comments within an email both in the "username" and "address" portions.

The following snippet from http://www.dominicsayers.com/isemail/ has this to say about comments within an email.

Comments are text surrounded by parentheses (like these). These are OK but don't form part of the address. In other words mail sent to first.last@example.com will go to the same place as first(a).last(b)@example(c).com(d). Strange but true.

  • Do emails like this really exist ?
  • Is it possible to form hosts like this ?

I tried entering an url such as "google(ignore).com" but firefox and some other browsers failed and i was wondering is this because its it wrong or is it because they dont know about host name comments ?

4

2 回答 2

1

原始电子邮件 RFC RFC 822addr-spec确实允许这种语法(其中的注释) 。但是,当 RFC 10 年前由RFC 2822修订时,不推荐放置您想要使用的注释。在当前版本RFC 5322中,它仍被标记为已过时。使用该语法发出任何东西都没有很好的借口。

地址解析器应该是向后兼容的,以涵盖所有可能的情况,包括 10 年不推荐使用的位,例如您在此处尝试利用的位。但我敢打赌,许多接收邮件代理将无法正确解析这些评论。因此,即使您可能通过 RFC 的“过时寻址”部分在技术上发现了一个漏洞,但在实践中它不太可能对您有多大好处。

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

于 2011-01-29T03:09:00.797 回答
0

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

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

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

  • 寻找一个@,
  • 确保在(用户名)之前和之后(域名)有东西,
  • 确保在主机名字符串中有一个“点”,
  • [extra credit] 对主机名进行 DNS 查找以确保它能够解析。
于 2011-01-29T02:37:07.543 回答