2014-11-26 2 views
0

나는 을 파일 (PHPExcel)과 으로 첨부하여 서버로 저장하지 않고 (PHPMailer) 메일로 보낼 수 있습니까?Excel 파일 (PHPExcel)을 작성하고 서버 저장없이 가능한 첨부 파일 (PHPMailer)로 메일로 보내주십시오.

PHPExcel에서 파일을 생성/생성하고 PHPMailer here을 통해 첨부 파일로 보낼 가능성을 알고 있습니다. 그러나 그것은 서버의 어딘가에 파일을 쓰거나 쓰는 것으로 작동합니다. 서버 리소스 소비만큼 나쁨.

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
ob_end_clean(); 
header('Content-Type: application/vnd.ms-excel'); 
... 
$objWriter->save('php://output'); 

이 가능 (방법)이다 ('PHP : // 출력') 저장 와 유사한 즉석에서 이메일에 첨부 : PHPExcel 직접 서버에 저장하지 않고 출력이 길을 수 있습니다 ?

+1

http://stackoverflow.com/questions/11164167/phpmailer-attachment-doing-it-without-a-physical-file capture excel 출력을 문자열로 변환하고 링크 된 메서드를 사용하여 전자 메일에 첨부하십시오. . 그러나 엑셀이 "크게"되면, 메모리 부족 오류로 스크립트를 쉽게 삭제할 수 있다는 점에 유의하십시오. –

+0

@MarcB, 경고 해 주셔서 감사합니다.하지만 Excel 파일의 크기가 3M이면 과부하가되고 메모리 부족 오류가 발생하지 않습니까? –

+0

잘 모르겠다. 그건 당신이 당신의 PHP 메모리 제한을 설정 한 것에 달려 있습니다. 캡쳐 된 문자열을 원래대로 캡처하고 첨부 파일을 phpmailer로 전달한 다음 전자 메일에 다시 포함 시키면됩니다. –

답변

0

로컬 파일을 사용하지 않고 첨부 파일을 보내려면 addStringAttachment() 메서드를 사용하십시오. 예를 들어 :

$string = $mything->getExcelData(); 
$mail->addStringAttachment($string, 'myfile.xls'); 

는 내부적으로는 .xls 확장에 대한 적절한 application/vnd.ms-excel MIME 타입을 설정 할, PHPMailer::filenameToType()를 호출합니다.

일반적으로 메모리 소비에 대해 걱정할 필요가 없을 것입니다. PHPExcel 자체는이 문자열을 일시적으로 저장하는 것보다 훨씬 메모리 집약적이므로, 문제가 생기면 그렇게 할 것입니다. 그래서 지금까지 이걸 멀리하기 전에