Webservice validador de e-mails

1,120 views
Skip to first unread message

Rodrigo Sebben

unread,
Nov 27, 2009, 10:54:11 AM11/27/09
to dug...@googlegroups.com
Alguem conhece um webservice gratuíto para validação de e-mails(verificar se o e-mail existe ou está correto antes de envia-lo) que ainda esteja ativo? ou então alguma rotina que possa ser feito internamente pelo delphi que verifique isso? Agradeço a quem poder ajudar.
 
Rodrigo

Newton Michel de Oliveira

unread,
Nov 27, 2009, 11:23:26 AM11/27/09
to dug...@googlegroups.com
Rodrigo,
   você quer validar o e-mail para ver se esta no formato correto (em...@provedor.com) ou quer saber se o e-mail existe? se for ver se o e-mail existe é so enviar e se der retorno de erro, vc exclui o e-mail...

Newton Michel de Oliveira www.nmooliveira.com.br
Mobile 55 51 92358577

Consultor de TI
Embarcadero Delphi 2009 Programming

Public Profile
http://www.linkedin.com/in/newtongaucho

Group Admin
http://www.dug-rs.org



2009/11/27 Rodrigo Sebben <hyug...@gmail.com>

Rodrigo Sebben

unread,
Nov 27, 2009, 11:33:23 AM11/27/09
to dug...@googlegroups.com
Quero mesmo é verificar se ele existe. Tenho uma rotina que usa os componentes client da indy de smtp e message, no momento do envio, o comando está dentro de um try finally, mas mesmo quando ocorre o erro de e-mail incorreto, ele não continua a rotina. Encontrei um artigo falando sobre webservices e achei que podesse dar certo, mas a maioria que tento usar não funciona.
 
As linhas onde faço a verificação são essas:
 
  IdSMTP1.Connect;
  try
    IdSMTP1.Send(IdMessage1);
  finally
    IdSMTP1.Disconnect;
  end;
ao dar o erro ele independente do que ocorrer, deve continuar a execução pois é uma lista de e-mail que devem ser enviados com anexo. E o que está acontecendo é que se lá no meio da rotina o e-mail está errado, ele termina a rotina ali mesmo.
 
Rodrigo

2009/11/27 Newton Michel de Oliveira <newton...@gmail.com>

Jair - MICROFLEX

unread,
Nov 27, 2009, 11:46:36 AM11/27/09
to dug...@googlegroups.com
Rodrigo:

Para evitar que a rotina seja interrompida por uma exceção, você deve tratá-la. Para isso existe o conjunto de diretivas "try...except". O "try...finally" não trata o erro, apenas garante que o que a parte da rotina que estiver no "finally" seja executada, mas o erro é levado adiante.

Simplificadamente, uma solução possível seria usar:
try
  IdSMTP1.Connect;
  try
    IdSMTP1.Send(IdMessage1);
  finally
    IdSMTP1.Disconnect;
  end;
except
end;

Nesse caso, está garantido que o componente IdSMTP1 será desconectado por estar no "finally", mas não será feito nada mais (não há nada dentro do except) e a rotina seguirá sendo executada como se nada tivesse acontecido.

Leia mais a respeito no help do Delphi.


Um abraço,
Jair


2009/11/27 Rodrigo Sebben <hyug...@gmail.com>

Mateus André

unread,
Nov 30, 2009, 7:15:22 AM11/30/09
to DUG-RS - Delphi Users Group Rio Grande do Sul
Bom dia

Existe uma solução para este seu problemas
http://verify-email.org/

nesse site ele faz uma validação, mas é free apenas 5 verificaçõe spor
hora.
então pra mais consultas que isso é pago.

ai é o fazer um POST do delphi para esta página passando o email e ela
valida se o email
é valido e se etsa funcionado.

On 27 nov, 14:46, Jair - MICROFLEX <j...@microflex.com.br> wrote:
> Rodrigo:
>
> Para evitar que a rotina seja interrompida por uma exceção, você deve
> tratá-la. Para isso existe o conjunto de diretivas "try...except". O
> "try...finally" não trata o erro, apenas garante que o que a parte da rotina
> que estiver no "finally" seja executada, mas o erro é levado adiante.
>
> Simplificadamente, uma solução possível seria usar:
> try
>   IdSMTP1.Connect;
>   try
>     IdSMTP1.Send(IdMessage1);
>   finally
>     IdSMTP1.Disconnect;
>   end;
> except
> end;
>
> Nesse caso, está garantido que o componente IdSMTP1 será desconectado por
> estar no "finally", mas não será feito nada mais (não há nada dentro do
> except) e a rotina seguirá sendo executada como se nada tivesse acontecido.
>
> Leia mais a respeito no help do Delphi.
>
> Um abraço,
> Jair
>
> 2009/11/27 Rodrigo Sebben <hyuga...@gmail.com>
>
> > Quero mesmo é verificar se ele existe. Tenho uma rotina que usa os
> > componentes client da indy de smtp e message, no momento do envio, o comando
> > está dentro de um try finally, mas mesmo quando ocorre o erro de e-mail
> > incorreto, ele não continua a rotina. Encontrei um artigo falando sobre
> > webservices e achei que podesse dar certo, mas a maioria que tento usar não
> > funciona.
>
> > As linhas onde faço a verificação são essas:
>
> >   IdSMTP1.Connect;
> >   try
> >     IdSMTP1.Send(IdMessage1);
> >   finally
> >     IdSMTP1.Disconnect;
> >   end;
> > ao dar o erro ele independente do que ocorrer, deve continuar a execução
> > pois é uma lista de e-mail que devem ser enviados com anexo. E o que está
> > acontecendo é que se lá no meio da rotina o e-mail está errado, ele termina
> > a rotina ali mesmo.
>
> > Rodrigo
>
> > 2009/11/27 Newton Michel de Oliveira <newtongau...@gmail.com>
>
> >> Rodrigo,
> >>    você quer validar o e-mail para ver se esta no formato correto (
> >> em...@provedor.com) ou quer saber se o e-mail existe? se for ver se o
> >> e-mail existe é so enviar e se der retorno de erro, vc exclui o e-mail...
>
> >> Newton Michel de Oliveirawww.nmooliveira.com.br
> >> Mobile 55 51 92358577
>
> >> Consultor de TI
> >> Embarcadero Delphi 2009 Programming
>
> >> Public Profile
> >>http://www.linkedin.com/in/newtongaucho
>
> >> Group Admin
> >>http://www.dug-rs.org
>
> >> 2009/11/27 Rodrigo Sebben <hyuga...@gmail.com>

Newton Michel de Oliveira

unread,
Nov 30, 2009, 8:50:38 AM11/30/09
to dug...@googlegroups.com
Olha esta rotina!


function TForm1.EnviaMail(Email,
                         Conta,
                         Senha,
                         Autentica,
                         Smtp,
                         Auth_SSL,
                         Nom_exibe,
                         Porta_smtp,
                         Corpo,
                         Destinatario,
                         Assunto : String) : Boolean;
var
  Mensagem: TIdMessage;
  cnxSMTP: TIdSMTP;
begin
  Result := True;

  try
    Mensagem := TIdMessage.Create(nil); // crio os componemtes em tempo de execução
    cnxSMTP  := TIdSMTP.Create(nil);

    Mensagem.From.Name    := 'REMETENTE'; // Nome do Remetente
    Mensagem.From.Address := Email; // E-mail do Remetente = email valido...
    Mensagem.Recipients.EMailAddresses := Destinatario;  // destinatario
    Mensagem.Priority := mpHighest;
    Mensagem.Subject := Assunto; // Assunto do E-mail

    cnxSMTP.Host := Smtp;  // smtp terra}
    cnxSMTP.Username := Conta;
    cnxSMTP.Password := Senha;

    if Autentica = 'S' then
       cnxSMTP.AuthenticationType := atLogin;

    if Autentica = 'N' then
       cnxSMTP.AuthenticationType := atNone;

    cnxSMTP.Port := StrToInt(Porta_smtp);

    Mensagem.Body.Clear;
    Mensagem.Body.Add(Corpo);

    cnxSMTP.Connect;

    try
      cnxSMTP.Send(Mensagem);
    except
       showmessage('Erro ao tentar enviar o email para ' + Destinatario + ' 1ª Tentativa');
    end;

    cnxSMTP.Disconnect;
    cnxSMTP.Host := Smtp;   // smtp
    cnxSMTP.AuthenticationType := atNone;
    cnxSMTP.Connect;

    try
      cnxSMTP.Send(Mensagem);
    except
      begin
        showmessage('Erro ao tentar enviar o email para ' + Destinatario + ' 2ª Tentativa');
        Result := false;
        showmessage('Não pode enviar o email para ' + Destinatario + #13#13 + 'Verifique as configurações da conta!');
      end;
    end;
    cnxSMTP.Disconnect;
  finally
    Mensagem.free; // destruo se não ha uso
    cnxSMTP.free;
  end;

  if Result then
   showmessage('E-Mail teste enviado para ' + Destinatario);
end;



Newton Michel de Oliveira www.nmooliveira.com.br
Mobile 55 51 92358577

Consultor de TI
Embarcadero Delphi 2009 Programming

Public Profile
http://www.linkedin.com/in/newtongaucho

Group Admin
http://www.dug-rs.org



2009/11/30 Mateus André <mateu...@gmail.com>
Reply all
Reply to author
Forward
0 new messages