形成一个Excel文件(PHPExcel)并将其作为附件(PHPMailer)邮寄而无需服务器存储,可能吗?

时间:2014-11-26 14:54:48

标签: yii phpexcel phpmailer send email-attachments

我希望形成一个文件(PHPExcel)并将其作为附件邮寄(PHPMailer)而不存储服务器,是否可能?

我知道在PHPExcel中形成/创建文件并通过PHPMailer here将其作为附件发送的可能性。但它通过在服务器中的某个地方写入文件来工作。就服务器资源消耗而言差。 PHPExcel允许直接以这种方式输出而无需保存在服务器上:

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

是否有可能(以及如何)将其附加到电子邮件中,类似于 save('php:// output')

1 个答案:

答案 0 :(得分:0)

要在不使用本地文件的情况下发送附件,请使用addStringAttachment()方法。例如:

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

在内部,我们会调用PHPMailer::filenameToType(),这会为application/vnd.ms-excel扩展名设置相应的.xls MIME类型。

一般来说,你可能不需要过多担心内存消耗这样做 - PHPExcel本身比仅仅暂时存储这个字符串要占用大量内存,所以如果你遇到麻烦,你很可能会在你做到这一点之前这样做