Enviar um relatório gerado no ReportPDF para um e-mail

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

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); ?>

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.

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

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…

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

clifortravaini,
muito boa esta solução e pratica… vou testar !

Vc falou no final do codigo, seria no onFooter ?

no final do código (no meu caso foi a ultima linha),

em anexo:

t+


REPORT_PDF.png

obrigado !

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

Só mais uma observação.

O PDF está sendo exibido na tela.

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

[]'s

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…

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+


REPORT1_PDF.png

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

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

É, eu devo estar fazendo alguma coisa errada.

Quando coloco o sc_send_mail no Layout PDF - Código abaixo da linha do sc_pdf_output fica com uma tela em branco e nada acontece e nem dá erro, mesmo no debug deu para ver alguma coisa.

Se testo o envio do e-mail em uma aplicação blank direto funciona sem problemas e o código é exatamente o mesmo, copiei e colei.

Onde será que está o erro???

[]'s

Olá Maurélio, bom dia.

Criei uma aplicação na V7 e também não enviou meu email,
tentei em codigo, e na onfooter e aqui também não funcionou,
mas tenho uma aplicação que faz isso desde a V4 e está funcionando
normal.

Coloque um controle para saber se esta tudo ok, ou onde está o erro.

mude seu sc_mail_send para o Onfooter…

sc_mail_send(…);

if ({sc_mail_ok}){
echo “Enviados {sc_mail_count} e-mail com sucesso !!”;
}else{
sc_error_message({sc_mail_erro});
}

[]´s