0

我正在尝试使用以下代码验证电子邮件地址列表:

Public Function ValidateEmailAddressField() As Boolean
    Dim isValid As Boolean = True
    Try
        txtServiceEmails.Text = txtServiceEmails.Text.Trim.Replace(",", ";")
        Dim validateMailAddress = New MailAddress(txtServiceEmails.Text.Trim)
        Return isValid
    Catch ex As Exception
        isValid = False
        Return isValid
    End Try

End Function

当我输入“johndoe@amce”或“johndoe@acme, janedoe@acme.org”时,代码验证为真。输入不带扩展名的电子邮件地址(例如“.com”)是否实际上被视为有效的电子邮件地址?

谢谢,

垃圾

4

3 回答 3

1

在合作环境中,域不必具有 .com/net/org... 'acme' 可以是有效域,因此,电子邮件 me@acme 可以是内部有效的电子邮件地址。

通常,人们使用正则表达式来验证电子邮件地址。有很多例子。

于 2012-11-23T18:20:44.713 回答
0

是的,它是有效的。电子邮件地址的域部分必须符合主机名的要求,并且根据本地配置,“扩展名”可能是可选的。

如果指定了包括顶级域名 (TLD) 在内的所有标签,则主机名被视为完全限定域名 (FQDN)。主机名 en.wikipedia.org 以顶级域 org 结尾,因此是完全限定的。根据操作系统的 DNS 软件实现,不合格的主机名(例如 csail 或 wikipedia)可能会自动与系统中配置的默认域名组合,以确定完全合格的域名。例如,麻省理工学院的学生可以发送邮件到“joe@csail”,并让邮件系统自动将其发送到 joe@csail.mit.edu

资料来源:维基百科

于 2012-11-23T18:22:55.587 回答
0

选择正则表达式验证器解决方案。

Public Function ValidateEmailAddressField() As Boolean

    Dim isValid As Boolean = True
    Dim emailExpression As New Regex("^((\s*[a-zA-Z0-9\._%-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}\s*[,;:]){1,100}?)?(\s*[a-zA-Z0-9\._%-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4})*$")
    Try
        txtServiceEmails.Text = txtServiceEmails.Text.Trim.Replace(",", ";")
        txtServiceEmails.Text = txtServiceEmails.Text.Trim.Replace(" ", "")
        isValid = emailExpression.IsMatch(txtServiceEmails.Text.Trim)

        Return isValid

    Catch ex As Exception
        isValid = False
        Return isValid
    End Try

End Function
于 2012-11-23T18:59:28.880 回答