-1

如何检查电子邮件是否有效?

(例如:- abc@yahoo.com -> 好的
abc@yahoo.con -> 错误)

我想检查所有世界级电子邮件地址的验证。

4

5 回答 5

3

您可以尝试使用反向电子邮件查找服务,但这些服务不是很可靠,而且许多电子邮件提供商拒绝反向查找请求。所以我认为你最好的办法是首先检查电子邮件地址的格式是否正确,然后检查主机域是否存在,然后发送一封验证电子邮件。

于 2013-04-25T04:32:09.947 回答
1

要检查字符串是否是有效的电子邮件,您可以使用 Regex,

前任 :

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);

要验证邮箱是否存在,请遵循本文。

验证电子邮件地址

当您向某人发送电子邮件时,该消息会发送到 SMTP 服务器,然后该服务器会查找电子邮件收件人所在域的 MX(邮件交换)记录。

例如,当您向 hello@gmail.com 发送电子邮件时,邮件服务器将尝试查找 gmail.com 域的 MX 记录。如果记录存在,下一步将确定该电子邮件用户名(在我们的示例中为 hello)是否存在。

使用类似的逻辑,我们可以验证来自计算机的电子邮件地址,而无需实际发送测试消息。

在.Net 中做同样的事情可能是一项乏味的任务。

于 2013-04-25T04:32:56.373 回答
0

这是一个毫无意义的练习。进行此验证的唯一真正方法是向某人发送电子邮件并要求回复以验证该电子邮件是否正在使用中。我也不明白你的例子,abc@yahoo.com 无效但 :-abc@yahoo.com 是?什么?做一些简单的验证你的用户输入正确,就是这样。

于 2013-04-25T04:28:18.430 回答
0
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$
于 2013-04-25T04:33:58.797 回答
0

您还可以使用MailAddress 类来验证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
}
于 2013-04-25T04:46:39.630 回答