Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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']; 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>
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?
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.
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.