验证电子邮件的常见做法?

时间:2010-07-21 14:12:53

标签: regex email email-validation

前几天我读了一篇文章,简要介绍了大多数现代网站中常见的验证缺陷,我决定对它做一些研究。

事实证明,MOST网站和电子邮件提供商(hotmail,yahoo)的验证过于严格。

-

在RFC 2821的2.3.10部分

  

因此,由于中间主机尝试通过修改传输来优化传输时出现问题的长期历史,因此必须仅通过地址的域部分中指定的主机来解释本地部分并为其分配语义。

在RFC 2822的第3.4.1节中详细介绍了用户解释的字符串应该是什么!

  

addr-spec是一个特定的Internet标识符,它包含一个本地解释的字符串,后跟at-sign字符(“@”,ASCII值64),后跟Internet域。本地解释的字符串是引用字符串点原子

在RFC 2822第3.2.4节最后,告诉我们点原子可能包含以下任何字符

  

$& * - = ^`| 〜#%'+ /? _ {}

在RFC 3696中进一步显示有效电子邮件列表。

  • “ABC \ @def” @ example.com
  • “Fred Bloggs”@ example.com
  • “乔\吹” @ example.com
  • “ABC DEF @” @ example.com
  • customer/department=shipping@example.com
  • $A12345@example.com
  • !def!xyz%abc@example.com
  • _somename@example.com

现在,我的问题给你们所有人,我应该多严格验证电子邮件。根据RCF?或根据人群。还有大多数人在那里验证了吗?

1 个答案:

答案 0 :(得分:1)

我通常使用正则表达式来验证电子邮件。 regular-expressions.info有一个good page,包括一个应该符合RFC 2822的正则表达式。

另一个问题是哪个ISP允许电子邮件地址,例如:!def !xyz%abc @ example.com,customer / department = shipping @ example.com,“Fred Bloggs”@ example.com?我怀疑很少,如果有的话。我认为您不必担心这些奇怪的情况,因为它们很少使用(据我所知 - 我从未见过使用这些表格的任何地址)。