如何检查电子邮件是不是有效? [复制]
Posted
技术标签:
【中文标题】如何检查电子邮件是不是有效? [复制]【英文标题】:How to Check Email is validate or not? [duplicate]如何检查电子邮件是否有效? [复制] 【发布时间】:2013-04-18 20:28:00 【问题描述】:如何检查电子邮件是否有效?
(例如:- abc@yahoo.com -> 好的 abc@yahoo.con ->错误)
我想检查所有世界级电子邮件地址的验证。
【问题讨论】:
你的意思是检查所有域吗? 值得指出的是,即将推出数百个新的***域。.con
不是新的 TLD 之一,但您的代码确实需要了解新的 TLD。任何事情都可能是有效的。 from the list 的一些示例包括 .bike
、.baby
、.inc
等等。此外,.co
和 .cm
是有效的扩展名,因此即使它们是 .com
的常见拼写错误,您也不能自动认为它们不正确。
【参考方案1】:
您也可以使用MailAddress Class 来验证string
并创建一个扩展。
public static bool IsValidEmailAddress(this string email)
try
var addr = new MailAddress(email);
return true;
catch
return false;
用法:
string email = "test@yahoo.com";
if (email.IsValidEmailAddress())
//TODO: Is email
【讨论】:
【参考方案2】:^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]2|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$
【讨论】:
无法正常工作 ------------------要检查字符串是否是有效的电子邮件,您可以使用正则表达式,
例如:
bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`|~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`|~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]2|asia|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel)\b)\Z", RegexOptions.IgnoreCase);
要验证邮箱是否存在,请阅读这篇文章。
Verify an Email Address
当您向某人发送电子邮件时,该邮件会发送到 SMTP 服务器 然后查找电子邮件的 MX(邮件交换)记录 收件人的域。
例如,当您向 hello@gmail.com 发送电子邮件时,该邮件 服务器将尝试查找 gmail.com 域的 MX 记录。如果 记录存在,下一步将是确定是否存在 电子邮件用户名(在我们的示例中为你好)是否存在。
使用类似的逻辑,我们可以验证来自 没有实际发送测试消息的计算机。
在 .Net 中做同样的事情可能是一项乏味的任务。
【讨论】:
它工作正常...谢谢【参考方案4】:您可以尝试使用反向电子邮件查找服务,但这些服务不是很可靠,而且许多电子邮件提供商拒绝反向查找请求。所以我认为你最好的办法是首先检查电子邮件地址的格式是否正确,然后检查主机域是否存在,然后发送验证电子邮件。
【讨论】:
【参考方案5】:这是一个毫无意义的练习。进行此验证的唯一真正方法是向某人发送电子邮件并要求回复以验证该电子邮件是否正在使用中。我也不明白你的例子,abc@yahoo.com 无效但 :-abc@yahoo.com 是?什么?做一些简单的验证你的用户输入正确,就是这样。
【讨论】:
abc@yahoo.com 是正确的电子邮件地址,但 abc@yahoo.con 不正确。我问你如何检查它是否有效?以上是关于如何检查电子邮件是不是有效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何让我当前的 PHP 联系表单检查输入的电子邮件地址是不是有效? [复制]
如何检查 UITextField 的文本是不是是有效的电子邮件?