Autor Tópico: Enviar um relatório gerado no ReportPDF para um e-mail  (Lida 4312 vezes)

Maurélio

  • Avançado
  • ****
  • Mensagens: 304
  • O eterno Aprendiz.'.
    • Email
Enviar um relatório gerado no ReportPDF para um e-mail
« Online: Setembro 09, 2013, 04:14:53 pm »
Boa tarde Pessoal,

Depois de ficar quebrando a cabeça em um outro post que tinha colocado ontem e com o auxílio de vocês consegui resolver, agora estou com um outro problema, que também não tenho ideia de como fazer.

O cenário é o seguinte:

Tenho um relatório feito no ReportPDF que imprime os campos de um determinado registro.

Até ai está funcionando, mas preciso enviar este PDF para um endereço de e-mail, como anexo a uma mensagem, e não tenho ideia de como fazer e nem encontrei nenhuma dica sobre isto. Só achei outras dúvidas iguais a esta, mas sem resposta nenhuma.

O PDF não fica armazenado e nem salvo em nenhum lugar, ele é gerado apenas quando mando imprimir o relatório e, teoricamente, deve ser excluído depois, pois deve estar sendo gerado no /tmp que está configurado no SC.

Alguém pode me dar uma luz de como posso fazer isto?

O endereço do e-mail para envio da mensagem com o anexo pode ser o que está cadastrado na tabela do cliente.

Antecipadamente agradeço as colaborações.

[]'s
« Última modificação: Setembro 09, 2013, 04:30:00 pm por Maurélio »
Marco Aurélio

pessanha

  • Expert
  • *****
  • Mensagens: 643
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #1 Online: Setembro 09, 2013, 06:25:12 pm »
da uma lida nestas funções php:

ob_start();
ob_get_contents();


tenho um relatorio gerado e o resultado coloco dentro de uma variavel, possibilitando
o anexo no email. Funciona perfeito...

Ex.
<?php

ob_start();

echo "Hello ";

$out1 = ob_get_contents();

echo "World";

$out2 = ob_get_contents();

ob_end_clean();

var_dump($out1, $out2);
?>

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #2 Online: Setembro 09, 2013, 06:28:33 pm »
O pdf vai para pasta tmp, é dificil saber qual o nome será gerado.
Você teria a opção de gerar o pdf em disco, e anexar esse aquivo ao email.

Eu particularmente envio um link por email e o usuário aoclicar no link gera o pdf neste momento.

eu tenho uma tabela chamado dynamiclink.
onde gero um md5 que é a chave,  aplicação, e parâmetros

Ao clicar no link que chama uma blank, onde é passado a chave, essa blank faz um update na tabela, informando data hora ip e desativa o uso do link ( em alguns casos, outros permite regerar o pdf n vezes em até n horas e expira o link).
Após update redireciono para report pdf passando os parâmetros para  geração.

*Existem membros aqui que não gostam dessa opção.



Maurélio

  • Avançado
  • ****
  • Mensagens: 304
  • O eterno Aprendiz.'.
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #3 Online: Setembro 12, 2013, 03:43:41 pm »
Olá Pessanha e Haroldo,

Obrigado pelo retorno dos dois.

Eu gosto da solução de enviar um link para o anexo, mas neste caso preciso enviar o PDF mesmo.

Já tentei várias coisas mas ainda não consegui.

O arquivo está sendo salvo no servidor e preciso envia-lo anexado em um e-mail.

Pessanha,

Você pode me dar um exemplo real de como utilizar as funções que mencionou?

Se possível, passa exatamente o que devo fazer.

[]'s
Marco Aurélio

pessanha

  • Expert
  • *****
  • Mensagens: 643
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #4 Online: Setembro 12, 2013, 05:36:13 pm »
Bem,
da forma que exemplifiquei, vc ira enviar o resultado e não o arquivo

Por exemplo,

1) crie o seu PDF e faça um grid para mostra-lo.

2) no grid gerado, onScriptInit vc coloca o ob_start()

3) no grid gerado, onfooter vc coloca o
         [out2] = ob_get_contents();    // [out2] sera a variavel que vai receber o relatorio


Então, o resultado do grid vai para variavel..... vc pode manipular esta variavel.
No meu caso envio para um email...


clifortravaini

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #5 Online: Setembro 13, 2013, 09:07:35 am »
Bom dia,

Aqui resolvemos da seguinte maneira:

1) No seu Report PDF, edite o código em (Layout PDF) -- (Código) e insira uma linha no final do código
    onde será gravado seu pdf no disco.

    sc_pdf_output("c:\\temp\\" . [nome_arquivo] . ".pdf");


 2) Após isso utilize a macro do scriptcase para enviar o email informando o anexo no caminho e nome especificado no pdf:

    sc_mail_send(SMTP, Usr, Pw, De, Para, Assunto, Mensagem, Tipo_Mens, Cópias, Tp_Cópias, Porta, Tp_Conexao, Anexo);



[]´s


pessanha

  • Expert
  • *****
  • Mensagens: 643
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #6 Online: Setembro 13, 2013, 09:57:08 am »
clifortravaini,
muito boa esta solução e pratica.... vou testar !

Vc falou no final do codigo, seria no onFooter ?

clifortravaini

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #7 Online: Setembro 13, 2013, 10:24:40 am »
no final do código (no meu caso foi a ultima linha),

em anexo:



t+

pessanha

  • Expert
  • *****
  • Mensagens: 643
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #8 Online: Setembro 13, 2013, 12:16:56 pm »
obrigado !


Maurélio

  • Avançado
  • ****
  • Mensagens: 304
  • O eterno Aprendiz.'.
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #9 Online: Setembro 13, 2013, 04:26:03 pm »
Olá,

Esta sua sugestão seria a ideal para o meu caso e outros que já encontrei no fórum.
Por favor, me de uma explicação um pouco mais detalhada, pois fiz um teste e não funcionou.
Coloquei o seguinte comando no final dos códigos usando a visão do Corpo.

sc_pdf_output("\\home\\maurelio\\CP1Remote\\" . "Certificado.pdf");

Existem também as visões de Definição e Layout.

Por enquanto eu tentei somente salvar o PDF, mas não funcionou.

Outra coisa é onde colocar a macro para enviar o e-mail?
É nesta mesma tela, em uma linha abaixo?

Muito obrigado pela sua ajuda.

[]'s

Marco Aurélio

Maurélio

  • Avançado
  • ****
  • Mensagens: 304
  • O eterno Aprendiz.'.
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #10 Online: Setembro 13, 2013, 04:31:00 pm »
Só mais uma observação.

O PDF está sendo exibido na tela.

É assim mesmo ou tem alguma outra configuração que fiz errado?

[]'s
Marco Aurélio

clifortravaini

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #11 Online: Setembro 13, 2013, 05:04:32 pm »
ok, vamos por partes

O PDF está aparecendo na tela, isso é correto, o sc vai gerar o pdf na tela e vai gravá-lo na pasta especificada no sc_pdf_output.

verifique na sua pasta \\home\\maurelio\\CP1Remote\\ se gravou o arquivo  Certificado.pdf

você está no linux ?   eu faço no 2008 Server  em uma pasta temporária e ele grava o arquivo PDF normal...

Se ele gravou o Pdf na pasta, verifique seu comando sc_mail_send(............ se não gravou, verifique se tem permissão de gravar
nesta pasta que escolheu...




clifortravaini

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #12 Online: Setembro 13, 2013, 05:28:25 pm »
Outra opção,
se quiser gravar no servidor, sem mostrar o pdf no browser,

utilize a opção conforme na figura do anexo:

depois que gravar no servidor, envie o email pela macro do scriptcase.

t+

Maurélio

  • Avançado
  • ****
  • Mensagens: 304
  • O eterno Aprendiz.'.
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #13 Online: Setembro 13, 2013, 05:46:29 pm »
Obrigado pelo breve retorno.

A gravação funcionou sem nenhum problema. Era a permissão da pasta e agora está perfeito, até com as variáveis no nome do arquivo.

O problema agora está no envio do e-mail.

Coloquei na linha abaixo do comando sc_pdf_output o comando do sc_mail_send, mas está dando algum erro, pois quando executo fica em uma tela em branco.

Na tela do código do PDF aceita colocar as variáveis para enviar o sc_mail_send?

É na linha abaixo mesmo que devo colocar este comando?

Mais uma vez obrigado.

Isto funcionando vai ajudar bastante gente aqui do fórum, pois será uma solução excelente para enviar um PDF por email depois que gerar ele no ReportPDF.

[]'s
Marco Aurélio

Maurélio

  • Avançado
  • ****
  • Mensagens: 304
  • O eterno Aprendiz.'.
    • Email
Re:Enviar um relatório gerado no ReportPDF para um e-mail
« Responder #14 Online: Setembro 13, 2013, 05:51:27 pm »
O comando do envio foi este:

sc_mail_send('smtp', 'usuario', 'senha', 'de', 'para', 'Assunto', 'Mensagem', 'H', , , '587', , "/var/www/scriptcase/tmp/" . "Certificado" . {idcalibra} . "pdf");

Com os campos entre aspas.

É ai que perguntei se ele aceita as variáveis desta mesma tela.

[]'s
Marco Aurélio