none
Validar Email

    Question

  • Olá pessoal, queria uma ajuda, tenho um sistema que valida um email com

    ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">

    e tenho o metodo de email que verifica o formato do email, existe o metodo que manda email e eu modifiquei para mandar mais de um email ao mesmo tempo, gostaria de saber como faço para que o metodo que  pega os dados do "ValidationExpression" le-se  email por email em meu textBox e torna-se todos validos, e quando não fosse valido não envia-se a mensagem.

    Obrigado
    Wednesday, January 13, 2010 7:12 PM

Answers

  • Faz assim :

            public bool ValidaEmail(string email)
            {
                string strRegex = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}" + "\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
                Regex re = new Regex(strRegex);
                if ((re.IsMatch(email)))
                    return true;
                else
                    return false;
            }

            private List<String> EmailsValidados(string[] emails)
            {
                List<string> emailsValidados = new List<string>();
                foreach (string email in emails)
                {
                    if (ValidaEmail(email.Trim()))
                        emailsValidados.Add(email);
                }
                return emailsValidados;
            }

            private void BtnEnviarEmails_Click(object sender, EventArgs e)
            {
                string[] sEmailDest = null;
                //Recebe os E-mails
                sEmailDest = TxtEmails.Text.Trim().Split(';');

                List<string> listaEmailsValidados = this.EmailsValidados(sEmailDest);
                foreach (string email in listaEmailsValidados)
                {
                    boxnetMail.To = txtDest.Text.Trim() + "<" + email + ">";
                }
            }

    O que acontece,
    pega os emails digitados no textBox no array sEmailDes,
    depois passamos este array para a funcao EmailsValidados(string[] emails)
    e dentro dela fizemos um loop para validar o email retornando apenas os emails
    válidos.

    Ou pode fazer assim sem a necessidade da função EmailsValidados(string[] emails):

            private void BtnEnviarEmails_Click(object sender, EventArgs e)
            {
                string[] sEmailDest = null;
                //Recebe os E-mails
                sEmailDest = TxtEmails.Text.Trim().Split(';');

                foreach (string email in sEmailDest)
                {
                     if (ValidaEmail(email.Trim()))
                            boxnetMail.To = txtDest.Text.Trim() + "<" + email.Trim() + ">";
                }
            }
    Thursday, January 14, 2010 1:15 AM

All replies

  • Ola Zemions,
    Pelo que entendi você vai fazer com que o usuario digite varios email's em um mesmo textBox separados por algum caracter (,) certo ?

    Se for isso você deve criar uma função que pegue todas as SubString  dos emails digitados e chamar a função de validação.


            public bool ValidaEmail(string email)
            {
                string strRegex = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}" + "\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
                Regex re = new Regex(strRegex);
                if ((re.IsMatch(email)))
                    return true;
                else
                    return false;
            }
    Wednesday, January 13, 2010 7:53 PM
  • Alcenir

    //Vetor para receber os E-mail dos Dest. que são validos
                string[] sEmailDest = null;

                //Recebe os E-mails
                sEmailDest = txtEmailDest.Text.Trim().Split(';');

                //Laço para mandar todos e-mails
                foreach (string s in sEmailDest)
                {

                    //array com Destinatarios de e-mail          
                    boxnetMail.To = txtDest.Text.Trim() + "<" + s.Trim() + ">";

    Esse meu foreach pega os email´s do  txtEmailDest  e tem que  validar um por um, no caso  esse codigo que voce passou tenho que chamar ele dentro desse outro metodo  que pega os emails  e assim fazer a validação?

    E minha duvida é exatamente o que você entendeu 

    Wednesday, January 13, 2010 8:16 PM
  • Faz assim :

            public bool ValidaEmail(string email)
            {
                string strRegex = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}" + "\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
                Regex re = new Regex(strRegex);
                if ((re.IsMatch(email)))
                    return true;
                else
                    return false;
            }

            private List<String> EmailsValidados(string[] emails)
            {
                List<string> emailsValidados = new List<string>();
                foreach (string email in emails)
                {
                    if (ValidaEmail(email.Trim()))
                        emailsValidados.Add(email);
                }
                return emailsValidados;
            }

            private void BtnEnviarEmails_Click(object sender, EventArgs e)
            {
                string[] sEmailDest = null;
                //Recebe os E-mails
                sEmailDest = TxtEmails.Text.Trim().Split(';');

                List<string> listaEmailsValidados = this.EmailsValidados(sEmailDest);
                foreach (string email in listaEmailsValidados)
                {
                    boxnetMail.To = txtDest.Text.Trim() + "<" + email + ">";
                }
            }

    O que acontece,
    pega os emails digitados no textBox no array sEmailDes,
    depois passamos este array para a funcao EmailsValidados(string[] emails)
    e dentro dela fizemos um loop para validar o email retornando apenas os emails
    válidos.

    Ou pode fazer assim sem a necessidade da função EmailsValidados(string[] emails):

            private void BtnEnviarEmails_Click(object sender, EventArgs e)
            {
                string[] sEmailDest = null;
                //Recebe os E-mails
                sEmailDest = TxtEmails.Text.Trim().Split(';');

                foreach (string email in sEmailDest)
                {
                     if (ValidaEmail(email.Trim()))
                            boxnetMail.To = txtDest.Text.Trim() + "<" + email.Trim() + ">";
                }
            }
    Thursday, January 14, 2010 1:15 AM
  • Alcenir, muito Obrigado fiz mais algumas modificações no codigo que você me passou, e deu certo!
    Valeu mesmo!!
    Thursday, January 14, 2010 12:42 PM