Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vazzoler

Gerar arquivo XLS dinamicamente e enviar por email.

Recommended Posts

Boa noite Pessoal!

 

Estou com o seguinte problema: estou gerando dinamicamente um um arquivo xls e gravando no meu servidor. Até aí está tudo ok. Porém eu gostaria de, logo após de gerado, esse arquivo fosse enviado por email.  Estou usando phpmailer para o envio. O email está sendo enviado, porém sem o anexo. Segue meu código:

 

<?php
//Incluir a classe excelwriter
include("engine/excelwriter.inc.php");

require_once 'engine/core.php';
require_once 'engine/validacao_logado.php';

require ('phpmailer/class.phpmailer.php');
require ("phpmailer/class.smtp.php");

session_start();
$exportar = $_POST['exportar'];
if(!isset($exportar)) {
    GotoPage("cargas");
}
$cargas = $_SESSION['cargas'];

//Você pode colocar aqui o nome do arquivo que você deseja salvar.
$excel=new ExcelWriter("planilha.xls");

if($excel==false){
    echo $excel->error;
}

//Escreve o nome dos campos de uma tabela
$myArr=array('Pedido','ID-TP','Cliente','Origem','Cliente','Destino','Tarifa','Qtde','Peso','Data','Produto','Motorista','Placa','CTE','Manifesto','Status','Observacao');
$excel->writeLine($myArr);


foreach ($cargas as $carga) {
    $myArr=array($carga->pedido,$carga->id_tp,$carga->cliente_origem,$carga->cidade_origem,$carga->cliente_destino,$carga->cidade_destino,'R$ '.number_format($carga->tarifa, 2, ',', '.'),$carga->quantidade,number_format($carga->peso, 2, ',', '.'),DataMySQL_Brasil($carga->data),$carga->produto,$carga->motorista,$carga->placa,$carga->cte,$carga->manifesto,$carga->status,$carga->observacao);
    $excel->writeLine($myArr);
}

$excel->close();

// Envia o e-mail de boas vindas ao cliente cadastrado.
$email = new PHPMailer();
$email->From = 'email@email.com.br';
$email->FromName = 'Email';
$email->Subject = 'Planilha de Cargas';
$email->Body = 'Segue em anexo planilha de Cargas';
$email->AddAddress( 'email@email.com.br' );

$file_to_attach = 'planilha.xls';

$email->AddAttachment( $file_to_attach , 'planilha.xls');

return $email->Send();

?>

Alguém sabe me dizer porque não está anexando?

 

Obrigado

 

Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Você tem que salvar o arquivo no servidor antes de criar o anexo. O arquivo não existe até que você o tenha salvo lá. Você pode fazer uma verificação antes de enviar o e-mail usando file_exists().

 

2) Você tem que setar o caminho completo no AddAttachment. A não ser que seu PHPMailer esteja na mesma pasta de planilha.xls, ele não vai funcionar assim mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Maykel-ctba disse:

1) Você tem que salvar o arquivo no servidor antes de criar o anexo. O arquivo não existe até que você o tenha salvo lá. Você pode fazer uma verificação antes de enviar o e-mail usando file_exists().

 

2) Você tem que setar o caminho completo no AddAttachment. A não ser que seu PHPMailer esteja na mesma pasta de planilha.xls, ele não vai funcionar assim mesmo.

1) Apesar do teste não estar sendo feito, o arquivo existe, inclusive fiz um teste colocando um link para fazer o download do mesmo e deu tudo certo.

 

2) O arquivo está sendo salvo no mesmo diretório do PHPMailer. Teria que ficar no mesmo diretório do diretório do phpmailer ou no mesmo diretório da classe do phpmailer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal é ter uma pasta só para estes arquivos gerados em XLS. Pra não misturar as coisas, sabe?

 

Mas se você consegue baixar o arquivo após ser gerado, o problema deve ser outro. Libere as visualizações de erro, e também o debug do PHPMailer para ver se encontramos algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.