Marcosvbn 0 Denunciar post Postado Dezembro 9, 2010 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
wllf 2 Denunciar post Postado Dezembro 10, 2010 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
Faccruz 0 Denunciar post Postado Dezembro 10, 2010 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