System.Net.Mail.MailAddress(“emailAddress”)不检查有效电子邮件

时间:2014-02-17 00:19:03

标签: powershell

如何在Powershell中检查有效的电子邮件地址?

我已经使用Google搜索了这一点,并且大多数人都说使用$toadr = new-object net.mail.mailaddress($to)进行try / catch。

但是,这不会检查电子邮件末尾的.com等。

EG。 $toadr = new-object net.mail.mailaddress("test@mailcom")

即使com之前没有点,

也不会抛出异常。

2 个答案:

答案 0 :(得分:4)

我建议使用正则表达式。

Using a regular expression to validate an email address

$EmailRegex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$';
if ('test@mailcom' -match $EmailRegex) {
    # Matched
}
else {
    # Did not match
}

答案 1 :(得分:2)

在分析字符串本身的格式时,并不总是能够知道电子邮件地址是否有效。 test@mailcom实际上可能是有效的电子邮件地址(如果没有DNS查询,您就不会知道),因此MailAddress无法假定它无效。

由于一些流行的电子邮件正则表达式验证程序实际上使某些有效的电子邮件地址无效,我建议不要超越MailAddress进行验证。