У меня есть сайт, где на странице я разработал отчет xls. После его создания я хочу отправить его по почте с помощью phpmailer. Как я могу прикрепить этот файл к письму? Это мой код:
$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 }
Ты пробовал…
$mail->AddAttachment($full_path_to_file, "report.xls");
**Code to create excel in php:** $dtime=date('Ymd Hi-s'); $dtimeFile=date('YmdHi-s'); $headerTab ="Col1 \t Col2\t Col3\n"; $rowRecords=''; $rowRecords .=preg_replace("/\r|\n|\t/"," ",$Col1)."\t".preg_replace("/\r|\n|\t/", " ",$Col2)."\t".preg_replace("/\r|\n|\t/", " ",Col3). "\t\n"; 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"."\r\n"; $headers.= "Bcc: bcc@gmail.com"."\r\n"; $headers.= "MIME-Version: 1.0\r\n"; $headers.= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; $headers .= "This is a multi-part message in MIME format.\r\n"; $headers .= "--".$uid."\r\n"; $headers .= "Content-type:text/html; charset=iso-8859-1\r\n"; $headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $headers .= $msg."\r\n\r\n"; $headers .= "--".$uid."\r\n"; $headers .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; $headers .= "Content-Transfer-Encoding: base64\r\n"; $headers .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; $headers .= $content."\r\n\r\n"; $headers .= "--".$uid."--"; $date=date("Ymd"); if(mail($to,"Mail heading--".$date,$msg,$headers)){ echo "Mailed successfully"; } else { echo "Mailed couldn't be sent"; }