I have a site where in a page I have developed an xls report. After its creation I want to send it in a mail with phpmailer. How can I attach this file to the email? This is my code:
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Alessandro Minoccheri")
->setLastModifiedBy("Alessandro Minoccheri")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Generazione report inverter")
->setKeywords("office 2007 openxml php")
->setCategory("");
$row=1;
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('0', $row, 'Inverter');
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('1', $row, 'Channel');
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('2', $row, 'Picco');
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('3', $row, 'Picco data');
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('4', $row, 'Media');
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('5', $row, 'Sommatoria');
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('report.xls');
$yourName = 'Client';
$yourEmail_2 = 'alessandro@xxx-it';
ini_set("include_path", "../inc/phpmailer/");
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = 'xxx@xxx.com';
$mail->FromName = 'Client';
$mail->AddAddress($yourEmail_2);
//$mail->AddBCC($yourEmail_2);
/*if(!empty($_FILES['attachment']['tmp_name'])){
$new_name = urlencode( rand(0,10000).rand(10000,20000).$_FILES['attachment']['name'] );
if(move_uploaded_file($_FILES['attachment']['tmp_name'],'./uploads/'.$new_name)){
$string_file = '<p>Curriculum allegato: '</p>';
}
}*/
$mail->WordWrap = 50; // set word wrap
$mail->IsHTML(true); // send as HTML
$mail->Subject = 'Riepilogo settimanale';
$mail->Body = "Riepilogo settimanale dell'impianto: ".utf8_decode($inv['name']);
$mail->AltBody = "Riepilogo settimanale dell'impianto: ".utf8_decode($inv['name']);
if ( $mail->Send()){
//ok
}
Have you tried...
$mail->AddAttachment($full_path_to_file, "report.xls");
**Code to create excel in php:**
$dtime=date('Y-m-d H-i-s');
$dtimeFile=date('Y-m-d-H-i-s');
$headerTab ="Col1 \t Col2\t Col3
";
$rowRecords='';
$rowRecords .=preg_replace("/|
|\t/"," ",$Col1)."\t".preg_replace("/|
|\t/", " ",$Col2)."\t".preg_replace("/|
|\t/", " ",Col3). "\t
";
date_default_timezone_set('America/Los_Angeles');
$filename="Your File Name-".$dtimeFile.".xls";
$path='/pathOfFile/';
$csv_handler = fopen ($path.$filename,'w');
fwrite ($csv_handler,$headerTab);
fwrite ($csv_handler,$rowRecords);
fclose ($csv_handler);
**Code to send html email with attached excel in php:**
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$headers = "From: from@gmail.com"."
";
$headers.= "Bcc: bcc@gmail.com"."
";
$headers.= "MIME-Version: 1.0
";
$headers.= "Content-Type: multipart/mixed; boundary=\"".$uid."\"
";
$headers .= "This is a multi-part message in MIME format.
";
$headers .= "--".$uid."
";
$headers .= "Content-type:text/html; charset=iso-8859-1
";
$headers .= "Content-Transfer-Encoding: 7bit
";
$headers .= $msg."
";
$headers .= "--".$uid."
";
$headers .= "Content-Type: application/octet-stream; name=\"".$filename."\"
";
$headers .= "Content-Transfer-Encoding: base64
";
$headers .= "Content-Disposition: attachment; filename=\"".$filename."\"
";
$headers .= $content."
";
$headers .= "--".$uid."--";
$date=date("Y-m-d");
if(mail($to,"Mail heading--".$date,$msg,$headers)){
echo "Mailed successfully";
}
else
{
echo "Mailed couldn't be sent";
}