Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcosvbn

Tratamento de erro

Recommended Posts

Amigos olha eu estou passando por uma dificuldade com tratamento de erro

bom vou postar o codigo

 

bom vou dzer o que acontece e o erro que preciso tratar este exemplo abaixo é um teste que estou fazendo para colocar no sistema que bolei aqui.

 

o sistema que fiz aqui faz o seguinte ele busca clientes com faturas vencidas, logo depois pega o email deste cliente e evia uma notificação

bom o meu problema é que tem varios clientes em que o campo de email esta assim (chbsjdhfbvsjbvjasdvjasvjbjckhb) ou seja não faz aentido algum porem foi como eu encontrei o cadastro de cliente aqui da empresa e não posso mecher nisso pois a empresa é uma transportadra tem mais de 4000 clientes cadastrados entende ai fica complicado bom

o erro acontece ao tentar enviar pois o email e selecionado altomaticamente eu fiz um tratamento logo abaixo ele ta fazendo quase o que eu quero só que o sistema ainda da aquela

para com a mensagem de erro , eu quero que ele passe por esta mensagem de erro ou seja ignore o erro e va para o proximo email como eu fiz embaixo

ou para um email alternativo que sera informado por mim por favor quem poder me da esta ajuda agradeço desde já !!!!!!

 

begin

Email.From.Address:=EdEmail.Text;

Email.From.Name:= EdNome.Text;

Email.Recipients.EMailAddresses:=EdPara.Text;

 

Email.Body:=Memo1.Lines;

 

Servidor.Host:= EdServidor.Text;

Servidor.Port:= StrToInt(EdPorta.Text);

Servidor.Username:=EdUsuario.Text;

Servidor.Password:= EdSenha.Text;

Servidor.Connect;

try

Servidor.Send(Email);

Except

begin

ShowMessage('Erro ao enviar mensagem');

Servidor.Disconnect;

Email.Recipients.EMailAddresses:='marcosefabi@bol.com.br';

Servidor.Connect;

Servidor.Send(Email);

ShowMessage('Mensagem enviada com sucesso');

end;

end;

 

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso acho q você quer tratar 2 erros com uma exceção:

 

1- Um provável problema de envio;

 

2- Tentando enviar uma mensagem para um e-mail q não existe.

 

Eu acho melhor você separar os tratamentos, não seria mais fácil você criar uma função q captura a string do e-mail e valida como tal, tipo se ele conter o caracter "@", ou condições normais de validação de e-mail, ai você valida a string, isso levando em consideração q os cadastros preenchidos incorretamente, sem o "@".

 

Ou ainda existe uma outra possibilidade, não sei com qual componente você está desenvolvendo este envio de e-mail, mas caso você esteja usando (IdSMTP), ele faz uma verificação nos endereços dos destinatários da mensagens, antes do envio, quando se executa o comando:

 

IdSMTP1.Send(MSG);

 

Caso o endereço do destinatário seja inválido ele dispara esse evento:

 

procedure TFRMPRINCIPAL.IdSMTP1FailedRecipient(Sender: TObject;

const AAddress, ACode, AText: String; var VContinue: Boolean);

begin

showmessage('Endereço Inválido: '+aaddress);

end;

 

Mas não é 100% seguro essa validação, isso pq existe x motivos pela qual esse evento pode ser disparado, um deles seria se a caixa postal do destinatário estiver cheia, e por ai vai, então fk a seu critério.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso acho q você quer tratar 2 erros com uma exceção:

 

1- Um provável problema de envio;

 

2- Tentando enviar uma mensagem para um e-mail q não existe.

 

Eu acho melhor você separar os tratamentos, não seria mais fácil você criar uma função q captura a string do e-mail e valida como tal, tipo se ele conter o caracter "@", ou condições normais de validação de e-mail, ai você valida a string, isso levando em consideração q os cadastros preenchidos incorretamente, sem o "@".

 

Ou ainda existe uma outra possibilidade, não sei com qual componente você está desenvolvendo este envio de e-mail, mas caso você esteja usando (IdSMTP), ele faz uma verificação nos endereços dos destinatários da mensagens, antes do envio, quando se executa o comando:

 

IdSMTP1.Send(MSG);

 

Caso o endereço do destinatário seja inválido ele dispara esse evento:

 

procedure TFRMPRINCIPAL.IdSMTP1FailedRecipient(Sender: TObject;

const AAddress, ACode, AText: String; var VContinue: Boolean);

begin

showmessage('Endereço Inválido: '+aaddress);

end;

 

Mas não é 100% seguro essa validação, isso pq existe x motivos pela qual esse evento pode ser disparado, um deles seria se a caixa postal do destinatário estiver cheia, e por ai vai, então fk a seu critério.

 

 

Faça uma validação no email?

 

function ValidarEMail(aStr: string): Boolean;
begin
aStr := Trim(UpperCase(aStr));
if Pos('@', aStr) > 1 then
begin
  Delete(aStr, 1, pos('@', aStr));
  Result := (Length(aStr) > 0) and (Pos('.', aStr) > 2);
end
else
  Result := False;
end; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.