Ir para conteúdo
  • Cadastre-se

dev botao

Tratar exceção na procedure!! enviar email!


raosistemas
  • Este tópico foi criado há 3895 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • 2 meses depois ...

smtp.Sock.RaiseExcept := True;

Mudei direto na Unit ACBrNFeNotasFiscais.

Acrescentei o ThreadSMTP.smtp.Sock.RaiseExcept := True; na "procedure NotaFiscal.EnviarEmail" e nao adiantou tambem, usando o componente

TidSMTP da indy eu consigo controlar mas quando vou utilizar o recurdo do ACBR nao consigo.

Grato pela atencao.

ainda com o problema.....

Link para o comentário
Compartilhar em outros sites

tem que colocar o exit depois do showmessage

exemplo:

try

dmAux.EmailCorpo.From.Name := xxxxxxx;

dmAux.EmailCorpo.From.Address := 'xxxxxxxxxxxx';

dmAux.EmailCorpo.Recipients.EMailAddresses := dm.cdsClienteEMAIL.AsString;

dmAux.EmailCorpo.Priority := mpHighest;

dmAux.EmailCorpo.Subject := 'Arquivo xml da NF ' + IntToStr(dm.CDS_VENDA_CABNUMERONF.AsInteger);

dmAux.SMTP1.Host := 'smtps.uol.com.br';

dmAux.SMTP1.Username := 'XXXXXX';

dmAux.SMTP1.Password := 'XXXXXX';

dmAux.SMTP1.AuthType := satDefault;

dmAux.SMTP1.Port := 587;

dmAux.EmailCorpo.Body.Clear;

dmAux.EmailCorpo.Body.Add('Segue em anexo o arquivo xml ref a NF-e ' + IntToStr(dm.CDS_VENDA_CABNUMERONF.AsInteger));

anexo:= (ACBrNFe.NotasFiscais.Items[0].NomeArq);

TIdAttachmentFile.Create(dmAux.EmailCorpo.MessageParts, TFileName(Anexo));

dmAux.SMTP1.Connect;

dmAux.SMTP1.Send(dmAux.EmailCorpo);

dmAux.SMTP1.Disconnect;

DeleteFile(ACBrNFe.NotasFiscais.Items[0].NomeArq);

except

on e: Exception do

begin

ShowMessage('E-mail não enviado');

exit;

end;

end;

for i := 0 to 1000 do

ProgressBar1.Position:= 1000;

ShowMessage('E-mail enviado com sucesso');

ProgressBar1.Visible:= false;

Link para o comentário
Compartilhar em outros sites

Vlw cara mas não é bem isso que estou querendo.

Da forma q vc fez da pra tratar 100% entendo.

O problema e que eu quero tratar a função do ACBR e não de um componente da Indy q eu criei na aplicação, tipo isso:

--try

----AcNFE.NotasFiscais.Items[0].EnviarEmail(, , , , , , ,nil,True,False,nil,nil,False,False, ,True);

--Except on e : exception do

----begin

-----SalvaErro(e.message,'','');

-----ShowMessage('Atenção, ocorreu uma falha na tentativa de enviar o E-mail para o cliente ... !');

----end;

--end;

Atenção, o tratamento do código acima não funciona dessa forma, se alguém tiver uma forma de tratar que funcione me envie por favor.

Grato pela atenção.

Link para o comentário
Compartilhar em outros sites

  • Consultores

se o tratamento não funciona assim é porquê o método AcNFE.NotasFiscais.Items[0].EnviarEmail não está levantando uma exception.

Talvez a exception esteja sendo tratada lá dentro, ou não seja mesmo levantada. Você precisa verificar debugando.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

se o tratamento não funciona assim é porquê o método AcNFE.NotasFiscais.Items[0].EnviarEmail não está levantando uma exception.

Talvez a exception esteja sendo tratada lá dentro, ou não seja mesmo levantada. Você precisa verificar debugando.

Olá Barbosa.

Já verifiquei, e sim ela é tratada lá dentro porem a mensagem de retorno do ACBR no Exception não é das melhores e gostaria de modificar porem eu não quero modificar na unit do ACBR e sim fazer um tratamento externo, tipo eu quero informar para o meu cliente que a mensagem de fulano de tal não foi enviado e blablabla.

Grato pela atenção.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...

ACBrNFe.NotasFiscais.Items[0].EnviarEmail(vQAux.FieldByName('MAIL_SERVER_SMTP_NFE').AsString,// edtSmtpHost.Text

vQAux.FieldByName('MAIL_PORTA_NFE').AsString,//, edtSmtpPort.Text

vQAux.FieldByName('MAIL_USER_NFE').AsString,//, edtSmtpUser.Text

vQAux.FieldByName('MAIL_SENHA_NFE').AsString,//, edtSmtpPass.Text

vQAux.FieldByName('MAIL_USER_NFE').AsString,//, edtSmtpUser.Text

vDest,

vQAux.FieldByName('MAIL_ASSUNTO_NFE').AsString,//, edtEmailAssunto.Text

mmEmailMsg,

cbEmailSSL,//, cbEmailSSL.Checked // SSL - Conexão Segura

True, //Enviar PDF junto

CC, //Lista com emails que serão enviado cópias - TStrings

nil, // Lista de anexos - TStrings

true, //Pede confirmação de leitura do email

true, //Aguarda Envio do Email(não usa thread)

vOPerador,//, 'ACBrNFe2' // Nome do Rementente

cbEmailSSL );

ShowMessage(ACBrNFe.NotasFiscais.Items[0].Msg);

Adicionei esta linha ShowMessage(ACBrNFe.NotasFiscais.Items[0].Msg); e o que acontece é que gera o erro pelo componente Acbr e nesta linha informada nada retorna

Link para o comentário
Compartilhar em outros sites

try

ACBrNFe.NotasFiscais.Items[0].EnviarEmail(vQAux.FieldByName('MAIL_SERVER_SMTP_NFE').AsString,// edtSmtpHost.Text

vQAux.FieldByName('MAIL_PORTA_NFE').AsString,//, edtSmtpPort.Text

vQAux.FieldByName('MAIL_USER_NFE').AsString,//, edtSmtpUser.Text

vQAux.FieldByName('MAIL_SENHA_NFE').AsString,//, edtSmtpPass.Text

vQAux.FieldByName('MAIL_USER_NFE').AsString,//, edtSmtpUser.Text

vDest,

vQAux.FieldByName('MAIL_ASSUNTO_NFE').AsString,//, edtEmailAssunto.Text

mmEmailMsg,

cbEmailSSL,//, cbEmailSSL.Checked // SSL - Conexão Segura

True, //Enviar PDF junto

CC, //Lista com emails que serão enviado cópias - TStrings

nil, // Lista de anexos - TStrings

true, //Pede confirmação de leitura do email

true, //Aguarda Envio do Email(não usa thread)

vOPerador, //, 'ACBrNFe2' // Nome do Rementente

cbEmailSSL );

if ACBrNFe.NotasFiscais.Items[0].Alertas = '' Then

Begin

vQaux.Close;

vQaux.SQL.Clear;

vAux := 'UPDATE NOTA_FISCAL N ';

vAux := vAux + ' SET DT_EMAIL_NFE = SYSDATE';

vAux := vAux + ' WHERE N.NR_DA_NOTA = :NOTA';

vAux := vAux + ' AND N.ID = :ID ';

vAux := vAux + ' AND N.CD_SERIE = :CD_SERIE';

vQAux.SQL.Add(vAux);

vQAux.Params[0].AsString := Q1.FieldByName('NR_DA_NOTA').AsString;

vQAux.Params[1].AsString := Q1.FieldByName('ID').AsString;

vQAux.Params[2].AsString := Q1.FieldByName('CD_SERIE').AsString;

vQAux.ExecSQL();

vQAux.Close;

vQAux.Free;

End;

except

end;

Estou tratando a rotina de envio de e-mail com try dentro dela tem um if que verifica o alerta mas antes de chegar no alerta um erro é exibido para o cliente com a mensagem de alerta. "E essa mensagem que eu gostaria que não fosse exibida ou se eu pudesse tratá-la"

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Por exemplo se um email for cadastrado erradamente e enviado para o componente dará este erro :
"SMTP ERROR: MailTo:Permanent Failure-Syntax error
504 5.5.2 : Recipient address rejected: need fully-qualified address."

Só que se vc. reparar no código que passei acima o mesmo esta protegido só que não entra no except !!!

Editado por EMBarbosa
Post estava quebrando o layout das fontes do fórum
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Membros Pro

Por exemplo se um email for cadastrado erradamente e enviado para o componente dará este erro :

"SMTP ERROR: MailTo:Permanent Failure-Syntax error

504 5.5.2 : Recipient address rejected: need fully-qualified address."

Só que se vc. reparar no código que passei acima o mesmo esta protegido só que não entra no except !!!

 Conseguiram resolver este problema?

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • 1 mês depois ...
  • Este tópico foi criado há 3895 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.