【问题标题】:Making email address a@b.c not pass validation? [duplicate]使电子邮件地址 a@b.c 未通过验证? [复制]
【发布时间】:2016-10-28 22:35:48
【问题描述】:

我倾向于使用以下服务器端代码来验证电子邮件地址:

bool result = false;

try
{
    MailAddress emailAddress = new MailAddress(_EmailAddress);
    result = true;
}
catch (Exception)
{
}

return result;

以上内容基于包括this one在内的许多SO帖子。我的不同之处在于,除了进行实际交付或在线检查之外,是否还有其他方法可以进一步完善明显无效的电子邮件地址,即:

电子邮件地址 a@b.c 通过验证,并且在MimeKit 的作者提供的漂亮simple validator 中也是如此。

虽然理论上这可能是一个有效的电子邮件地址,但实际上并非如此。我唯一的选择是实际进行某种形式的交付测试以进一步验证电子邮件地址吗?

或者有人有其他解决方案吗? (最好不是正则表达式)。

【问题讨论】:

  • 您没有看到前十几个(或更多)关于电子邮件验证的现有问题?
  • 如果没有 DNS 查找,您将无法执行此操作。 a@b.c 通过电子邮件格式的 RFC 规则。
  • @KenWhite 我做到了,现在我已经澄清了我的问题是不同的。
  • @Patrick 谢谢这是我所追求的答案。如果您想提交作为答案,我会接受。
  • @Patrick 我已通过 MX DNS 查找增强了我的验证。如果没有域的 MX 查找,那么它现在会失败。这样它也将始终是最新的。

标签: c# validation email


【解决方案1】:

如果没有 DNS 查找,您将无法执行此操作。 a@b.c 通过电子邮件格式的 RFC 规则。

如果要使用RegEx,可以使用下面的,对于a@b.c.是假的

您需要使用有效的当前域使其保持最新状态,并且如果没有检查,则无法保证它确实存在。

private static bool ValidEmail(string emailAddress) {
   var regex = new Regex(@"([a-z0-9][-a-z0-9_\+\.]*[a-z0-9])@([a-z0-9][-a-z0-9\.]*[a-z0-9]\.(arpa|root|aero|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|([0-9]{1,3}\.{3}[0-9]{1,3}))");
   return regex.IsMatch(emailAddress);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2013-05-23
    • 2014-04-03
    • 2016-09-28
    • 2014-06-12
    相关资源
    最近更新 更多