Ir para conteúdo
  • Cadastre-se

dev botao

Envio De Boleto Por E-Mail


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

Recommended Posts

Boa tarde pessoal,

 

Estou implementando o processo de geração de boleto utilizando o ACBr no meu projeto. A geração funcionou perfeitamente, porem quando vou utilizar o método disponível no componente de enviar o e-mail com o boleto, o mesmo não funciona. Estava olhando os fontes do ACBr e vi que foi comentado os códigos referente ao mesmo. 

procedure TACBrBoleto.EnviarEmail(const sSmtpHost,
                                      sSmtpPort,
                                      sSmtpUser,
                                      sSmtpPasswd,
                                      sFrom,
                                      sTo,
                                      sAssunto: String;
                                      sMensagem : TStrings;
                                      SSL : Boolean;
                                      EnviaPDF: Boolean = true;
                                      sCC: TStrings=nil;
                                      Anexos:TStrings=nil;
                                      PedeConfirma: Boolean = False;
                                      AguardarEnvio: Boolean = False;
                                      NomeRemetente: String = '';
                                      TLS : Boolean = True;
                                      HTML:Boolean = False);
var
  ThreadSMTP : TSendMailThread;
  m:TMimemess;
  p: TMimepart;
  StreamNFe : TStringStream;
  i: Integer;
begin
  m:=TMimemess.create;

  ThreadSMTP := TSendMailThread.Create(Self) ;  // Não Libera, pois usa FreeOnTerminate := True ;
  StreamNFe  := TStringStream.Create('');
  try
    p := m.AddPartMultipart('mixed', nil);
    if sMensagem <> nil then
//       m.AddPartText(sMensagem, p);
      if HTML = true then
         m.AddPartHTML(sMensagem, p)
      else
         m.AddPartText(sMensagem, p);

    if (EnviaPDF) then
     begin
       if ACBrBoletoFC.NomeArquivo = '' then
          ACBrBoletoFC.NomeArquivo := 'boleto.pdf';;
       GerarPDF;
       m.AddPartBinaryFromFile(ACBrBoletoFC.NomeArquivo, p);
     end
    else
     begin
       if ACBrBoletoFC.NomeArquivo = '' then
          ACBrBoletoFC.NomeArquivo := 'boleto.html';;
       GerarHTML;
       m.AddPartBinaryFromFile(ACBrBoletoFC.NomeArquivo, p);
     end;


    if assigned(Anexos) then
       for i := 0 to Anexos.Count - 1 do
       begin
          m.AddPartBinaryFromFile(Anexos[i], p);
       end;

    m.header.tolist.add(sTo);

    if Trim(NomeRemetente) <> '' then
       m.header.From := Format('%s<%s>', [NomeRemetente, sFrom])
    else
       m.header.From := sFrom;

    m.header.subject:= sAssunto;
    m.Header.ReplyTo := sFrom;
    if PedeConfirma then
       m.Header.CustomHeaders.Add('Disposition-Notification-To: '+sFrom);
    m.EncodeMessage;

    ThreadSMTP.sFrom := sFrom;
    ThreadSMTP.sTo   := sTo;
    if sCC <> nil then
       ThreadSMTP.sCC.AddStrings(sCC);
    ThreadSMTP.slmsg_Lines.AddStrings(m.Lines);

    ThreadSMTP.smtp.UserName := sSmtpUser;
    ThreadSMTP.smtp.Password := sSmtpPasswd;

    ThreadSMTP.smtp.TargetHost := sSmtpHost;
    if trim(sSmtpPort)<>'' then     // Usa default
       ThreadSMTP.smtp.TargetPort := sSmtpPort;

    ThreadSMTP.smtp.FullSSL := SSL;
    ThreadSMTP.smtp.AutoTLS := TLS;


    ThreadSMTP.Resume; // inicia a thread
    if AguardarEnvio then
    begin
      repeat
         Sleep(1000);
         Application.ProcessMessages;
      until ThreadSMTP.Terminado;
    end;
 finally
    m.free;
    StreamNFe.Free ;
 end;
end;
procedure TACBrBoletoFCQuick.Imprimir;
var
  frACBrBoletoQuick : TACBRBoletoFCQuickFr;
  RLLayout: TQuickRep;
  //MultiExport : TQRMultiExport ;
  //FiltroExportacao: TQRPAbstractExportFilter;
  //HTMLFilter  : TQRHTMLDocumentFilter ;
begin
  inherited Imprimir;    // Executa verificações padroes

  frACBrBoletoQuick := TACBrBoletoFCQuickFr.Create(Self);
  try
     with frACBrBoletoQuick do
     begin
        case LayOut of
           lCarne  : RLLayout:= BoletoCarne;
           lPadraoEntrega  : RLLayout:= LayoutPadraoEntrega;
        else
           RLLayout := LayoutBoleto;
        end;

        RLLayout.PrinterSettings.Copies := NumCopias ;

        case Filtro of
          fiPDF  :
            begin
//              FiltroExportacao := TQRPDFDocumentFilter.Create(NomeArquivo);
              try
//                TQRPDFDocumentFilter(FiltroExportacao).CompressionOn := true;
//                RLLayout.ExportToFilter(FiltroExportacao);
              finally
//                FiltroExportacao.Free;
              end;
//               MultiExport := TQRMultiExport.Create(self);
//               try
//                  MultiExport.Report       := RLLayout ;
//                  MultiExport.ExportFormat := qrxPDF ;
//                  MultiExport.FileName     := NomeArquivo ;
//                  MultiExport.ShowDialog   := MostrarSetup ;
//                  MultiExport.DPI          := 300 ;
//                  MultiExport.DoExport ;
//               finally
//                  MultiExport.Free ;
//               end ;
            end ;

          fiHTML :
            begin
               (*  Codigo abaixo comentado pois  não funciona...
               HTMLFilter := TQRHTMLDocumentFilter.Create( NomeArquivo );
               try
                  RLLayout.ExportToFilter( HTMLFilter );
               finally
                  HTMLFilter.Free ;
               end ;
               *)
               raise Exception.Create( ACBrStr('Exportação para HTML não implementada no QuickReport') ) ;
            end ;
        else
          begin
            if MostrarPreview then
               RLLayout.PreviewModal
            else
             begin
               if MostrarSetup then
                  RLLayout.PrinterSetup ;

               if (RLLayout.Tag = 0) then
                  RLLayout.Print;
             end ;
          end
        end ;
     end ;
  finally
     frACBrBoletoQuick.Free ;
  end;
end;

Repare que os códigos estão comentados. Alguém por favor pode me ajudar? Alguém utiliza o envio de boleto por e-mail?

 

OBS: Utilizo o Delphi 2010 e uso o Quick Report.

 

 

Att: Vinicius Sanchez

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa noite.

 

Qual é o problema que você está tendo?

 

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores
  • Solution

Bom dia.

 

Afim de concentrar os esforços em mlehorias e correções num número menor de componentes, estamos deixando de fornecer suporte aos boletos em QuickReport por isso recomendo a utilização do fortes report.

 

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Boa tarde pessoal,

 

Estou implementando o processo de geração de boleto utilizando o ACBr no meu projeto. A geração funcionou perfeitamente, porem quando vou utilizar o método disponível no componente de enviar o e-mail com o boleto, o mesmo não funciona. Estava olhando os fontes do ACBr e vi que foi comentado os códigos referente ao mesmo. 

procedure TACBrBoleto.EnviarEmail(const sSmtpHost,
                                      sSmtpPort,
                                      sSmtpUser,
                                      sSmtpPasswd,
                                      sFrom,
                                      sTo,
                                      sAssunto: String;
                                      sMensagem : TStrings;
                                      SSL : Boolean;
                                      EnviaPDF: Boolean = true;
                                      sCC: TStrings=nil;
                                      Anexos:TStrings=nil;
                                      PedeConfirma: Boolean = False;
                                      AguardarEnvio: Boolean = False;
                                      NomeRemetente: String = '';
                                      TLS : Boolean = True;
                                      HTML:Boolean = False);
var
  ThreadSMTP : TSendMailThread;
  m:TMimemess;
  p: TMimepart;
  StreamNFe : TStringStream;
  i: Integer;
begin
  m:=TMimemess.create;

  ThreadSMTP := TSendMailThread.Create(Self) ;  // Não Libera, pois usa FreeOnTerminate := True ;
  StreamNFe  := TStringStream.Create('');
  try
    p := m.AddPartMultipart('mixed', nil);
    if sMensagem <> nil then
//       m.AddPartText(sMensagem, p);
      if HTML = true then
         m.AddPartHTML(sMensagem, p)
      else
         m.AddPartText(sMensagem, p);

    if (EnviaPDF) then
     begin
       if ACBrBoletoFC.NomeArquivo = '' then
          ACBrBoletoFC.NomeArquivo := 'boleto.pdf';;
       GerarPDF;
       m.AddPartBinaryFromFile(ACBrBoletoFC.NomeArquivo, p);
     end
    else
     begin
       if ACBrBoletoFC.NomeArquivo = '' then
          ACBrBoletoFC.NomeArquivo := 'boleto.html';;
       GerarHTML;
       m.AddPartBinaryFromFile(ACBrBoletoFC.NomeArquivo, p);
     end;


    if assigned(Anexos) then
       for i := 0 to Anexos.Count - 1 do
       begin
          m.AddPartBinaryFromFile(Anexos[i], p);
       end;

    m.header.tolist.add(sTo);

    if Trim(NomeRemetente) <> '' then
       m.header.From := Format('%s<%s>', [NomeRemetente, sFrom])
    else
       m.header.From := sFrom;

    m.header.subject:= sAssunto;
    m.Header.ReplyTo := sFrom;
    if PedeConfirma then
       m.Header.CustomHeaders.Add('Disposition-Notification-To: '+sFrom);
    m.EncodeMessage;

    ThreadSMTP.sFrom := sFrom;
    ThreadSMTP.sTo   := sTo;
    if sCC <> nil then
       ThreadSMTP.sCC.AddStrings(sCC);
    ThreadSMTP.slmsg_Lines.AddStrings(m.Lines);

    ThreadSMTP.smtp.UserName := sSmtpUser;
    ThreadSMTP.smtp.Password := sSmtpPasswd;

    ThreadSMTP.smtp.TargetHost := sSmtpHost;
    if trim(sSmtpPort)<>'' then     // Usa default
       ThreadSMTP.smtp.TargetPort := sSmtpPort;

    ThreadSMTP.smtp.FullSSL := SSL;
    ThreadSMTP.smtp.AutoTLS := TLS;


    ThreadSMTP.Resume; // inicia a thread
    if AguardarEnvio then
    begin
      repeat
         Sleep(1000);
         Application.ProcessMessages;
      until ThreadSMTP.Terminado;
    end;
 finally
    m.free;
    StreamNFe.Free ;
 end;
end;
procedure TACBrBoletoFCQuick.Imprimir;
var
  frACBrBoletoQuick : TACBRBoletoFCQuickFr;
  RLLayout: TQuickRep;
  //MultiExport : TQRMultiExport ;
  //FiltroExportacao: TQRPAbstractExportFilter;
  //HTMLFilter  : TQRHTMLDocumentFilter ;
begin
  inherited Imprimir;    // Executa verificações padroes

  frACBrBoletoQuick := TACBrBoletoFCQuickFr.Create(Self);
  try
     with frACBrBoletoQuick do
     begin
        case LayOut of
           lCarne  : RLLayout:= BoletoCarne;
           lPadraoEntrega  : RLLayout:= LayoutPadraoEntrega;
        else
           RLLayout := LayoutBoleto;
        end;

        RLLayout.PrinterSettings.Copies := NumCopias ;

        case Filtro of
          fiPDF  :
            begin
//              FiltroExportacao := TQRPDFDocumentFilter.Create(NomeArquivo);
              try
//                TQRPDFDocumentFilter(FiltroExportacao).CompressionOn := true;
//                RLLayout.ExportToFilter(FiltroExportacao);
              finally
//                FiltroExportacao.Free;
              end;
//               MultiExport := TQRMultiExport.Create(self);
//               try
//                  MultiExport.Report       := RLLayout ;
//                  MultiExport.ExportFormat := qrxPDF ;
//                  MultiExport.FileName     := NomeArquivo ;
//                  MultiExport.ShowDialog   := MostrarSetup ;
//                  MultiExport.DPI          := 300 ;
//                  MultiExport.DoExport ;
//               finally
//                  MultiExport.Free ;
//               end ;
            end ;

          fiHTML :
            begin
               (*  Codigo abaixo comentado pois  não funciona...
               HTMLFilter := TQRHTMLDocumentFilter.Create( NomeArquivo );
               try
                  RLLayout.ExportToFilter( HTMLFilter );
               finally
                  HTMLFilter.Free ;
               end ;
               *)
               raise Exception.Create( ACBrStr('Exportação para HTML não implementada no QuickReport') ) ;
            end ;
        else
          begin
            if MostrarPreview then
               RLLayout.PreviewModal
            else
             begin
               if MostrarSetup then
                  RLLayout.PrinterSetup ;

               if (RLLayout.Tag = 0) then
                  RLLayout.Print;
             end ;
          end
        end ;
     end ;
  finally
     frACBrBoletoQuick.Free ;
  end;
end;

Repare que os códigos estão comentados. Alguém por favor pode me ajudar? Alguém utiliza o envio de boleto por e-mail?

 

OBS: Utilizo o Delphi 2010 e uso o Quick Report.

 

 

Att: Vinicius Sanchez

 

 

Adicione  a unit QRPDFFilt a user do ACBRboletoFCQuickFr. Descomente tudo da procedure TACBrBoletoFCQuick mantendo apenas a exclusão da linha ref, HTMLfilter. Dê um nome com final .pdf ao seu arquivo na propriedade do componente ACBrBoletoFCQuick.NomeArquivo.

 

Fiz estas alterações e funcionou corretamente com o boleto (arquivo pdf) atachado ao e-mail.

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois ...
Em 27/05/2015 at 15:42, Vinicius Sanchez disse:

Boa tarde pessoal,

 

Estou implementando o processo de geração de boleto utilizando o ACBr no meu projeto. A geração funcionou perfeitamente, porem quando vou utilizar o método disponível no componente de enviar o e-mail com o boleto, o mesmo não funciona. Estava olhando os fontes do ACBr e vi que foi comentado os códigos referente ao mesmo. 


procedure TACBrBoleto.EnviarEmail(const sSmtpHost,
                                      sSmtpPort,
                                      sSmtpUser,
                                      sSmtpPasswd,
                                      sFrom,
                                      sTo,
                                      sAssunto: String;
                                      sMensagem : TStrings;
                                      SSL : Boolean;
                                      EnviaPDF: Boolean = true;
                                      sCC: TStrings=nil;
                                      Anexos:TStrings=nil;
                                      PedeConfirma: Boolean = False;
                                      AguardarEnvio: Boolean = False;
                                      NomeRemetente: String = '';
                                      TLS : Boolean = True;
                                      HTML:Boolean = False);
var
  ThreadSMTP : TSendMailThread;
  m:TMimemess;
  p: TMimepart;
  StreamNFe : TStringStream;
  i: Integer;
begin
  m:=TMimemess.create;

  ThreadSMTP := TSendMailThread.Create(Self) ;  // Não Libera, pois usa FreeOnTerminate := True ;
  StreamNFe  := TStringStream.Create('');
  try
    p := m.AddPartMultipart('mixed', nil);
    if sMensagem <> nil then
//       m.AddPartText(sMensagem, p);
      if HTML = true then
         m.AddPartHTML(sMensagem, p)
      else
         m.AddPartText(sMensagem, p);

    if (EnviaPDF) then
     begin
       if ACBrBoletoFC.NomeArquivo = '' then
          ACBrBoletoFC.NomeArquivo := 'boleto.pdf';;
       GerarPDF;
       m.AddPartBinaryFromFile(ACBrBoletoFC.NomeArquivo, p);
     end
    else
     begin
       if ACBrBoletoFC.NomeArquivo = '' then
          ACBrBoletoFC.NomeArquivo := 'boleto.html';;
       GerarHTML;
       m.AddPartBinaryFromFile(ACBrBoletoFC.NomeArquivo, p);
     end;


    if assigned(Anexos) then
       for i := 0 to Anexos.Count - 1 do
       begin
          m.AddPartBinaryFromFile(Anexos[i], p);
       end;

    m.header.tolist.add(sTo);

    if Trim(NomeRemetente) <> '' then
       m.header.From := Format('%s<%s>', [NomeRemetente, sFrom])
    else
       m.header.From := sFrom;

    m.header.subject:= sAssunto;
    m.Header.ReplyTo := sFrom;
    if PedeConfirma then
       m.Header.CustomHeaders.Add('Disposition-Notification-To: '+sFrom);
    m.EncodeMessage;

    ThreadSMTP.sFrom := sFrom;
    ThreadSMTP.sTo   := sTo;
    if sCC <> nil then
       ThreadSMTP.sCC.AddStrings(sCC);
    ThreadSMTP.slmsg_Lines.AddStrings(m.Lines);

    ThreadSMTP.smtp.UserName := sSmtpUser;
    ThreadSMTP.smtp.Password := sSmtpPasswd;

    ThreadSMTP.smtp.TargetHost := sSmtpHost;
    if trim(sSmtpPort)<>'' then     // Usa default
       ThreadSMTP.smtp.TargetPort := sSmtpPort;

    ThreadSMTP.smtp.FullSSL := SSL;
    ThreadSMTP.smtp.AutoTLS := TLS;


    ThreadSMTP.Resume; // inicia a thread
    if AguardarEnvio then
    begin
      repeat
         Sleep(1000);
         Application.ProcessMessages;
      until ThreadSMTP.Terminado;
    end;
 finally
    m.free;
    StreamNFe.Free ;
 end;
end;

procedure TACBrBoletoFCQuick.Imprimir;
var
  frACBrBoletoQuick : TACBRBoletoFCQuickFr;
  RLLayout: TQuickRep;
  //MultiExport : TQRMultiExport ;
  //FiltroExportacao: TQRPAbstractExportFilter;
  //HTMLFilter  : TQRHTMLDocumentFilter ;
begin
  inherited Imprimir;    // Executa verificações padroes

  frACBrBoletoQuick := TACBrBoletoFCQuickFr.Create(Self);
  try
     with frACBrBoletoQuick do
     begin
        case LayOut of
           lCarne  : RLLayout:= BoletoCarne;
           lPadraoEntrega  : RLLayout:= LayoutPadraoEntrega;
        else
           RLLayout := LayoutBoleto;
        end;

        RLLayout.PrinterSettings.Copies := NumCopias ;

        case Filtro of
          fiPDF  :
            begin
//              FiltroExportacao := TQRPDFDocumentFilter.Create(NomeArquivo);
              try
//                TQRPDFDocumentFilter(FiltroExportacao).CompressionOn := true;
//                RLLayout.ExportToFilter(FiltroExportacao);
              finally
//                FiltroExportacao.Free;
              end;
//               MultiExport := TQRMultiExport.Create(self);
//               try
//                  MultiExport.Report       := RLLayout ;
//                  MultiExport.ExportFormat := qrxPDF ;
//                  MultiExport.FileName     := NomeArquivo ;
//                  MultiExport.ShowDialog   := MostrarSetup ;
//                  MultiExport.DPI          := 300 ;
//                  MultiExport.DoExport ;
//               finally
//                  MultiExport.Free ;
//               end ;
            end ;

          fiHTML :
            begin
               (*  Codigo abaixo comentado pois  não funciona...
               HTMLFilter := TQRHTMLDocumentFilter.Create( NomeArquivo );
               try
                  RLLayout.ExportToFilter( HTMLFilter );
               finally
                  HTMLFilter.Free ;
               end ;
               *)
               raise Exception.Create( ACBrStr('Exportação para HTML não implementada no QuickReport') ) ;
            end ;
        else
          begin
            if MostrarPreview then
               RLLayout.PreviewModal
            else
             begin
               if MostrarSetup then
                  RLLayout.PrinterSetup ;

               if (RLLayout.Tag = 0) then
                  RLLayout.Print;
             end ;
          end
        end ;
     end ;
  finally
     frACBrBoletoQuick.Free ;
  end;
end;

Repare que os códigos estão comentados. Alguém por favor pode me ajudar? Alguém utiliza o envio de boleto por e-mail?

 

OBS: Utilizo o Delphi 2010 e uso o Quick Report.

 

 

Att: Vinicius Sanchez

Ola preciso tambem enviar por email boletos e uso o acbrboleto...

vc conseguiu se puder me ajudar agradeço

[email protected]

Ola preciso tambem enviar por email boletos e uso o acbrboleto...

vc conseguiu se puder me ajudar agradeço

[email protected]

Em 28/05/2015 at 21:03, Juliana Tamizou disse:

Boa noite.

 

Qual é o problema que você está tendo?

 

Att.

Ola preciso tambem enviar por email boletos e uso o acbrboleto...

vc conseguiu se puder me ajudar agradeço na versão demo não temos um exemplo

[email protected]

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...