那这个呢?
bool IsValidEmail(string email)
{
try {
var addr = new System.Net.Mail.MailAddress(email);
return addr.Address == email;
}
catch {
return false;
}
}
为了澄清,问题是询问特定字符串是否是电子邮件地址的有效表示,而不是电子邮件地址是否是发送消息的有效目的地。为此,唯一的真实方法是发送消息进行确认。
请注意,电子邮件地址比您最初可能想象的要宽容得多。这些都是完全有效的形式:
在大多数情况下,对于用户和以后的证明,错误的“无效”要比错误的“有效”严重得多。这是一篇曾经是该问题的公认答案的文章(该答案已被删除)。它具有更多详细信息以及有关如何解决问题的其他一些想法。
提供健全性检查仍然是用户体验的一个好主意。假设电子邮件地址有效,则可以查找已知的顶级域,检查该域的MX记录,检查常见域名(gmail.cmo)的拼写错误,等等。然后向用户显示警告有机会说“是的,我的邮件服务器确实允许