C#代码验证电子邮件地址

此生再无相见时 提交于 2020-02-25 20:07:09

验证字符串是有效电子邮件地址的最优雅的代码是什么?


#1楼

就个人而言,我想说的是,您应该确保其中有一个@符号,可能还有一个。 字符。 您可以使用多种正则表达式来改变正确性,但我认为其中大多数会忽略有效的电子邮件地址,或者让无效的电子邮件地址通过。 如果人们想输入伪造的电子邮件地址,他们将输入伪造的电子邮件地址。 如果您需要验证电子邮件地址是合法的,并且该人可以控制该电子邮件地址,那么您将需要向他们发送一封带有特殊编码链接的电子邮件,以便他们可以验证该地址确实是真实地址。


#2楼

电子邮件地址验证并不像看起来那样容易。 从理论上讲,实际上仅使用正则表达式完全无法验证电子邮件地址。

查看我的博客文章 ,以获取有关该主题的讨论以及使用FParsec的F#实现。 [/ shameless_plug]


#3楼

老实说,在生产代码中,我要做的最好的就是检查@符号。

我永远无法完全验证电子邮件。 你知道我怎么看它真的有效吗? 如果发送了。 如果没有,那就很糟糕,如果做到了,那将是生活的美好。 这就是我所需要知道的。


#4楼

我发现此正则表达式在检查不仅仅是@标记的内容与接受奇怪的边缘情况之间是一个很好的权衡:

^[^@\s]+@[^@\s]+(\.[^@\s]+)+$

至少会使您在@标记周围加上一些内容,并至少使它看起来正常。


#5楼

如果您和我的意思是真的想知道一个电子邮件地址是否有效...请向邮件交换者进行证明,则不需要正则表达式。 如果需要,我可以提供代码。

常规步骤如下:1.电子邮件地址是否包含域名部分? (@的索引> 0)2.使用DNS查询询问域是否具有邮件交换器3.打开到邮件交换器的tcp连接4.使用smtp协议,使用电子邮件地址作为接收者打开到服务器的消息5。解析服务器的响应。 6.如果您已经做到了,请退出该消息,一切都很好。

您可以想象,这是非常昂贵的时间,并且依赖于smtp,但是它确实起作用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!