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

nokPT

[Resolvido] Validar emails

4 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL,

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora