用PHPExcel创建PHP邮件xlsx文件作为附件
问题描述:
所以我试图生成并保存一个Excel文件到服务器。这完美地与PHPExcel一起工作。下一步是读取文件,将其作为附件通过电子邮件发送,然后将其删除。用PHPExcel创建PHP邮件xlsx文件作为附件
出于某种原因,PHP不承认XLSX作为一个适当的文件:
/* excel is generated before here */
$filename = "/results/excel/export-" . $today . ".xlsx";
$writer = new PHPExcel_Writer_Excel2007($exc);
$writer->save($filename);
/* so far so good; the file is created and exists on the server */
$to = "[email protected]";
$sendermail = "[email protected]";
$from = "Sender <" . $sendermail . ">";
$subject = "Email with attachment";
$message = "Here you go";
$file = $filename;
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers = "From: $from";
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\" {$mime_boundary}\"";
$message = "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
if(is_file($file)) {
$message .= "--{$mime_boundary}\n";
$fp = @fopen($file, "rb");
$data = @fread($fp, filesize($file));
@fclose($fp);
$data = chunk_split(base64_encode($data));
$message .= "Content-Type: application/octet-stream; name=\"" . basename($file). ";\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $sendermail;
mail($to, $subject, $message, $headers, $returnpath);
} else {
echo("This is not a file: " . $file);
}
它总是给我“这不是一个文件...”。我如何阅读XLSX文件?
答
好吧,我发现那是什么。 $ filename实际上是直接(http:// ...)链接到文件,而不是相对链接。改变它是相对的,它的工作:)。
答
输出的消息意味着is_file()
失败。这可能发生的原因很多,但据我所知不是因为文件格式。因此,我建议您研究以下几点:
该文件是否真的存在?你说你保存了这个文件,但你必须确保它确实存在。
xslx文件使用的文件路径是否正确?
xslx文件的文件路径是实际的xml文件而不是它的符号链接?
设置xslx文件的权限是否允许php脚本访问它们?
我相信那一定是这些问题的一个...
答
这里的提示Excel和也发送文件作为附件不保存在服务器上的文件提示:
$objWriter = PHPExcel_IOFactory::createWriter ($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
$data = ob_get_contents();
$sendmail=new ExcelMail($data); //this is your mail class; if you use zend mail use addattachement($data); and Zend_Mime
检查针对该文件夹的PHP用户,你都saveing Excel文件或写权限/ tmp – 2012-02-06 12:37:07