0

我正在使用 phpexcel 创建一个 file.xls,然后我拿起这个小代码将 xls 作为附件通过电子邮件发送给我。问题是它发送 xls 附件filename = "._folder1_admin.xls"而不是实际文件名"admin.xls"

如果我定义$filename没有子目录,它工作正常。但是一旦我使用子目录,例如:$filename = "./folder1/".$contextUser.".xls";它搞砸了电子邮件中的文件名。

我试过html_entity_decode($filename)了,但没有帮助..

这是我可以看到它在发送电子邮件之前修改文件名的唯一代码

chunk_split(base64_encode(file_get_contents("$filename")));

无论如何,这是整个代码:

$filename = "./folder1/".$contextUser.".xls";
$strHeader .= "MIME-Version: 1.0\n";
$strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n";
$strHeader .= "This is a multi-part message in MIME format.\n";
$strHeader .= "--".$strSid."\n";
$strHeader .= "Content-type: text/html; charset=windows-874\n"; // or UTF-8 //
$strHeader .= "Content-Transfer-Encoding: 7bit\n\n";
$strHeader .= $strMessage."\n\n";
$strContent1 = chunk_split(base64_encode(file_get_contents("$filename")));
$strHeader .= "--".$strSid."\n";
$strHeader .= "Content-Type: application/octet-stream; name=\"$filename\"\n";
$strHeader .= "Content-Transfer-Encoding: base64\n";
$strHeader .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";
$strHeader .= $strContent1."\n\n";
4

1 回答 1

2

这里:

$strHeader .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";

您正在将文件名设置为的内容,$filenme并且由于./folder1/admin.xls不是有效的文件名,/因此被规范化为下划线。你可能想basename($filename)在这个地方使用。

于 2013-01-19T20:53:26.020 回答