Ir para conteúdo
  • Cadastre-se

dev botao

Tratar Exceção Na Função Enviaremail Do Acbrnfe


Ver Solução Respondido por Gabriel Frones,
  • Este tópico foi criado há 3256 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa Tarde,

 

Meus caros, estou usando a função enviaremail do acbrnfe, e gostaria de saber como posso tratar as exceções lançadas por essa função.  vejam como estou usando:

 

try
 
        ACBrNFe.NotasFiscais.Items[0].EnviarEmail(qrEmpresa.fieldbyname('nm_smtpemail').asstring
                                 , qrEmpresa.fieldbyname('nr_portaemail').asstring
                                 , qrEmpresa.fieldbyname('nm_usuarioemail').asstring
                                 , qrEmpresa.fieldbyname('nr_senhaemail').asstring
                                 , qrEmpresa.fieldbyname('nm_usuarioemail').asstring
                                 , Para
                                 , 'Nota Fiscal Eletrônica - '+ACBrNFe.NotasFiscais.Items[0].NFe.infNFe.ID
                                 , memo1.Lines //mmEmailMsg.Lines
                                 , (qrEmpresa.fieldbyname('tp_conexaoseguraemail').asinteger=1) // SSL - Conexão Segura
                                 , True //Enviar PDF junto
                                 , CC //Lista com emails que serão enviado cópias - TStrings
                                 , nil // Lista de anexos - TStrings
                                 , False  //Pede confirmação de leitura do email
                                 , True  //Aguarda Envio do Email(não usa thread)
                                 , qrempresa.fieldbyname('nm_emp').asstring // Nome do Rementente
                                 , (qrEmpresa.fieldbyname('tp_conexaossltsl').asinteger=1)); // Auto TLS
     
      except
        raise exception.Create('Email não enviado');
      end;
 
Em momento algum ele entra no except, mesmo a função retornando um erro. como posso fazer?
Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá Werner,

 

  Acho que não ficou claro. Que tipo de erro é retornado? O que você esperava que acontecesse?

[]'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

  • Membros Pro

EMBarbosa, a função está funcionando corretamente.

 

Eu quero tratar o retorno dela. por exemplo: Caso o usuário não informe a senha, a função retorna uma mensagem Com vários códigos que o usuário não entende, eu quero que exiba uma mensagem minha, nesse caso eu exibiria:"Emial não enviado. Verifique suas configurações."E caso o email seja enviado corretamente eu quero exibir a mensagem que o email foi enviado. Entendeu?

Link para o comentário
Compartilhar em outros sites

  • Solution

Werner,

 

Você está usando thread pra enviar e-mail. Por essa razão que não está funcionando o try..except: A função enviar e-mail só cria a thread e essa operação não gera exception nenhum. Para não usar thread, adicione mais um parâmetro, False à sua chamada de função:

try
 
        ACBrNFe.NotasFiscais.Items[0].EnviarEmail(qrEmpresa.fieldbyname('nm_smtpemail').asstring
                                 , qrEmpresa.fieldbyname('nr_portaemail').asstring
                                 , qrEmpresa.fieldbyname('nm_usuarioemail').asstring
                                 , qrEmpresa.fieldbyname('nr_senhaemail').asstring
                                 , qrEmpresa.fieldbyname('nm_usuarioemail').asstring
                                 , Para
                                 , 'Nota Fiscal Eletrônica - '+ACBrNFe.NotasFiscais.Items[0].NFe.infNFe.ID
                                 , memo1.Lines //mmEmailMsg.Lines
                                 , (qrEmpresa.fieldbyname('tp_conexaoseguraemail').asinteger=1) // SSL - Conexão Segura
                                 , True //Enviar PDF junto
                                 , CC //Lista com emails que serão enviado cópias - TStrings
                                 , nil // Lista de anexos - TStrings
                                 , False  //Pede confirmação de leitura do email
                                 , True  //Aguarda Envio do Email(não usa thread)
                                 , qrempresa.fieldbyname('nm_emp').asstring // Nome do Rementente
                                 , (qrEmpresa.fieldbyname('tp_conexaossltsl').asinteger=1) // Auto TLS
                                 , False); //Esse parametro diz pra não usar thread.
     
      except
        raise exception.Create('Email não enviado');
      end;

Lembrando que o parametro AguardarEnvio = True não significa que não vai usar thread, como está escrito nos seus comentários... significa que se usar, vai esperar ela concluir a tarefa. Eu, particularmente, não vejo muita vantagem em usar uma thread se você vai travar o programa até ela concluir, isso só adiciona complexidade ao seu programa.

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

×
×
  • 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.