Ir para conteúdo
  • Cadastre-se

dev botao

Enviar evento da NFe por e-mail


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

Recommended Posts

  • Fundadores

Acho que o post indicado, trata-se de outro assunto... nesse caso, já existe o método: ACBrNFe1.EnviarEmailEvento()

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O que quis dizer, no post anterior... é que você deveria usar uma chamada de "Envento" ou call-back, para retornar o Exception da Thread para a aplicação...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Promovi um intenso refactoring no TACBrMail, para corrigir alguns Bugs e outros pontos que não me agradavam...

Também revi o suporte dele a Múltiplas Threads...

Por favor atualize e teste as modificações

01/10/2015
-- ACBrMail --   (por: DSA)
[*] Assinatura do Evento "OnMailProcess" modificada, para informar o ACBrMail em
    execução como primeiro parâmetro
[+] Adicionado o Evento "OnMailException"
    procedure(const AMail: TACBrMail; const E: Exception; var ThrowIt: Boolean) of object;
[+] Adicionado o método: TACBrMail.Assign, para permitir copiar objetos TACBrMail
[+] Adicionado o método: TACBrMail.SaveToFile, para permitir salvar o email gerado
[+] Adicionado o método: TACBrMail.ClearAttachments para remover todos os anexos.
[*] Método TACBrMail.SendMail completamente reescrito, para corrigir problemas
    com Anexos e MimeParts
[-] Nomes dos anexos corrigidos, para usar o nome do Arquivo original ou o
    "NameRef" informado
[-] Envio por Thread completamente reescrito para permitir várias Threads em
    execução simultânea, com e-mails de diferente conteudo, e suporte aos Eventos

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Daniel, Ficou ótimo! Muito Obrigado!

Só mais uma duvida: Utilizo no evento OnAfterMailProcess e OnMailException, uma procedure com o código abaixo para garantir que os anexos sejam excluídos. (Senão os PDFs vão se acumulando na pasta). O problema é nesse ponto a lista de anexos(Attachments) está vazia, sabes por que?


  for I := 0 to Length(TACBrMail(Sender).Attachments)-1 do
  begin
    if FileExists(TACBrMail(Sender).Attachments.FileName) then
    DeleteFile(TACBrMail(Sender).Attachments.FileName);
  end;

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Daniel, 

Vi que os anexo estão sendo excluídos no procedimento clear abaixo. Precisamos dessa chamada aqui? 

 

procedure TACBrMail.SmtpError(const pMsgError: string);
begin
  Clear; <==
  fGetLastSmtpError := pMsgError;
  MailProcess(pmsError);
  DoException( Exception.Create(pMsgError) );
end;

Link para o comentário
Compartilhar em outros sites

  • Fundadores

humm.. em algum momento precisamos limpar as informações do componente... Caso contrário os anexos nunca seriam removidos da lista interna... e seriam enviados em todos e-mails subsequentes...

Mudei o Clear para o final... por favor atualize e teste...

[*] Ajustes para metodo Clear ser chamado apenas no final de SendMail ou SmtpError

 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
  • Fundadores
2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]". Favor leia as regras do fórum.
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
  • Membros Pro

Veja se te ajuda:

 

ACBrNFeObj:TACBrNFe 

ACBrNFeObj.EnviarEmailEvento(Destinatarios,
                                   Assunto,
                                   CorpoEmail,
                                   CC,
                                   Anexos);

Link para o comentário
Compartilhar em outros sites

Boa noite Paulo, estou fazendo assim, e o PDF envia mais o XML não.

    arquivo:= '110111'+Trim(CDFatura.FieldByName('CHAVE_NFE').AsString)+'01-ProcEventoNFe.xml';
    cArqXMLEvento := ACBrNFe1.Configuracoes.arquivos.PathNFe+FormatFloat('0000',anoem)+FormatFloat('00',mesem)+'\Evento\Cancelamento\'+arquivo;
    ACBrNFe1.EventoNFe.Evento.Clear;
    ACBrNFe1.EventoNFe.LerXML(cArqXMLEvento);
    CC:=TstringList.Create;
    try
      ACBrNFe1.EnviarEmailEvento(Para, TRIM(CDEMPRESA.FieldByName('ASSUNTO_EMAIL').AsString),
                                               mmEmailMsg.Lines, CC,nil);

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Boa tarde, alguem sabe me dizer porque o XML do evento não esta indo. Estou fazendo assim:

      arquivo:= '110111'+Trim(CDFatura.FieldByName('CHAVE_NFE').AsString)+'01-ProcEventoNFe.xml';
      cArqXMLEvento := ACBrNFe1.Configuracoes.arquivos.PathNFe+FormatFloat('0000',anoem)+FormatFloat('00',mesem)+'\Evento\Cancelamento\'+arquivo;
      ACBrNFe1.EventoNFe.Evento.Clear;
      ACBrNFe1.EventoNFe.LerXML(cArqXMLEvento);
      CC:=TstringList.Create;
      try
         ACBrNFe1.EnviarEmailEvento(Para, TRIM(CDEMPRESA.FieldByName('ASSUNTO_EMAIL').AsString),mmEmailMsg.Lines, CC,nil);

Desde já agradeço

 

 

Editado por toninho
Estou usando ACBrMail1
Link para o comentário
Compartilhar em outros sites

Toninho, acho que faltou o último parâmetro. Onde está "nil" tente enviar o arquivo. Aqui estou utilizando desta forma:

Var
  CC, Anexo, mmEmailMsg: Tstrings;
begin

  Anexo := TStringList.Create;
  Anexo.Clear;
  Anexo.Add(cArqXMLEvento);

  ACBrNFe1.EventoNFe.Evento.Clear;
  ACBrNFe1.EventoNFe.LerXML(cArqXMLEvento);
  
  ACBrNFe1.EnviarEmailEvento(Para, TRIM(CDEMPRESA.FieldByName('ASSUNTO_EMAIL').AsString),mmEmailMsg.Lines, CC, Anexo);


 

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

18 horas atrás, carlos_tedex disse:

Toninho, acho que faltou o último parâmetro. Onde está "nil" tente enviar o arquivo. Aqui estou utilizando desta forma:


Var
  CC, Anexo, mmEmailMsg: Tstrings;
begin

  Anexo := TStringList.Create;
  Anexo.Clear;
  Anexo.Add(cArqXMLEvento);

  ACBrNFe1.EventoNFe.Evento.Clear;
  ACBrNFe1.EventoNFe.LerXML(cArqXMLEvento);
  
  ACBrNFe1.EnviarEmailEvento(Para, TRIM(CDEMPRESA.FieldByName('ASSUNTO_EMAIL').AsString),mmEmailMsg.Lines, CC, Anexo);

Amigo Carlos tedex valeu muito pela sua ajudo que Deus retribua gentileza.

 

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

  • 1 mês depois ...
Em ‎29‎/‎09‎/‎2015 at 13:44, Paulo Alexandre Hostert disse:

Devo implementar o evento e te encaminhar?

Boa noite,

Estou com um problema no envio do XML e o PDF fiz esse código abaixo e quando envio ele criar no xml e não pegar o que foi validado pelo sefaz alquem poder mim ajuda.

procedure Tfrmnotafiscal_menu.bt_nfe_exportar1Click(Sender: TObject);
var
 Para : String;
 CC: Tstrings;
 sXML,pdf: string;
 bserv: boolean;
 StreamMemo: TMemoryStream;
 Email: TEmail;
begin
  try
    sXML := Gerar_XML;

    if FileExists(sXML) then
    begin
      frmmodulo.qrconfig.open;
      if edtSmtpHost.Text = '' then
      begin
        Application.messagebox('Favor configurar a conta de email!', 'Erro',
          mb_ok + mb_iconerror);
        exit;
      end;
      // verificar se pdf existe
    pdf:= 'C:\Inforpoint\pdf\'+ stringreplace( ExtractFileName(sXML), '-NFe.xml' , '.pdf',[rfReplaceAll, rfIgnoreCase]);
     if FileExists(pdf) then sXML := sXML + '|'+ pdf;

      qrNFE_Cliente.close;
      qrNFE_Cliente.sql.clear;
      qrNFE_Cliente.sql.add('select email from c000007');
      qrNFE_Cliente.sql.add('where codigo = ''' +
        qrnota.fieldbyname('codcliente').asstring + '''');
      qrNFE_Cliente.open;

      Para := qrNFE_Cliente.fieldbyname('Email').asstring;

      if Para = '' then
        inputbox('Email', 'Email do Cliente', '');

      if frmmodulo.qrconfig.fieldbyname('email_exige_conexao').asinteger = 1
      then
        bserv := True
      else
        bserv := False;
      email := TEmail.Create;
    end;
    //CC:=TstringList.Create;
       //CC.Add('[email protected]'); //especifique um email válido
      //CC.Add('[email protected]');    //especifique um email válido

      ACBrMail1.Host := edtSmtpHost.Text;
      ACBrMail1.Port := edtSmtpPort.Text;
      ACBrMail1.Username := edtSmtpUser.Text;
      ACBrMail1.Password := edtSmtpPass.Text;
      ACBrMail1.From := edtSmtpUser.Text;
      ACBrMail1.SetSSL := cbEmailSSL.Checked; // SSL - Conexão Segura
      ACBrMail1.SetTLS := cbEmailSSL.Checked; // Auto TLS
      ACBrMail1.ReadingConfirmation := False; //Pede confirmação de leitura do email
      ACBrMail1.UseThread := False;           //Aguarda Envio do Email(não usa thread)
      ACBrMail1.FromName := 'Nota e XML Referente as Compras!!!';

      ACBrNFe1.NotasFiscais.Items[0].EnviarEmail( Para, edtEmailAssunto.Text,
                                               mmEmailMsg.Lines
                                               , True  // Enviar PDF junto
                                               //, CC    // Lista com emails que serão enviado cópias - TStrings
                                               , nil); // Lista de anexos - TStrings
    finally
      CC.Free;
    end;
    Application.messagebox('Email enviado com sucesso!', 'Aviso',
          mb_ok + MB_ICONINFORMATION);
end;

 

Editado por Carlosac
erro no codigo
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2792 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.