Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

nokPT

[Resolvido] Validar emails

Recommended Posts

nokPT

Bom dia,

No Blog do JPaulino está explicado com validar email:

http://vbtuga.blogspot.com/2008/03/vbnet-validar-e-mails-usando-o-regex.html

Tenho uma textbox onde o cliente vai introduzir vários email, a ideia é verificar se por acaso há algum erro, só que todos os email que meto são erro.

    Private Sub txbDestinatáriosEmailManual_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txbDestinatáriosEmailManual.Leave
        ' Testa os emails para verificar se há caracteres inválidos
        Try
            If txbDestinatáriosEmailManual.Text <> "" Then
                Dim Email() As String = txbDestinatáriosEmailManual.Text.Split(";")

                For i As Integer = 0 To Email.Length - 1
                    If EmailAddressCheck(EmailAddressCheck(i)) = False Then
                        MsgBox("O email número " & (i + 1).ToString & vbCrLf & Email(i) & vbCrLf & "Não é válido. Verifique por favor!", MsgBoxStyle.OkOnly, "Destinatários.")
                        Exit Sub
                    End If
                Next
            End If
        Catch ex As Exception
            GravaErro("Erro #!!! -> " & ex.Message)
        End Try
    End Sub

e

    Function EmailAddressCheck(ByVal emailAddress As String) As Boolean
        ' Verifica se há caracteres inválidos no email
        ' Pattern ou mascara de verificação
        Try
            Dim pattern As String = "^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"
            ' TODO não está a funcionar
            ' Verifica se o email corresponde a pattern/mascara
            Dim emailAddressMatch As Match = Regex.Match(emailAddress, pattern)

            ' Caso corresponda
            If emailAddressMatch.Success Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            GravaErro("Erro #!!! -> " & ex.Message)
        End Try
    End Function

Já experimentei várias combinações do pattern, mas nada, até email tipo: a ou a@a dão erro.

O que me está a falhar?


Ricardo Timóteo

Share this post


Link to post
Share on other sites
jpaulino

Já experimentei várias combinações do pattern, mas nada, até email tipo: a ou a@a dão erro.

a@a é normal que dê erro ... não é válido :confused:

Já tentaste:

 If EmailAddressCheck("jorge@paulino.com") Then

Dá lá um exemplo do email que não funcione.

 

EDIT:

Se tiveres espaços entre os emails, exemplo "email1@abc.com; email2@abc.com", deves fazer:

 If EmailAddressCheck(EmailAddressCheck(i).Trim) = False Then

Share this post


Link to post
Share on other sites
nokPT

Obrigado pela dica do trim,

Já detectei o erro, estava a fazer:

 If EmailAddressCheck(EmailAddressCheck(i).Trim) = False Then

e devia estar a fazer:

 If EmailAddressCheck(Email(i).Trim) = False Then

é daquelas coisas que é melhor parar ir dormir e olhar muito depois para descobrir...


Ricardo Timóteo

Share this post


Link to post
Share on other sites
jpaulino

LOL,

Sinceramente nem tinha visto isso ... quando disseste que não funcionava com a@a nem fui ver mais nada :confused:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.