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