我正在使用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";
答案 0 :(得分:2)
下面:
$strHeader .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";
您要将文件名设置为$filenme
的内容,并且由于./folder1/admin.xls
无效,因此/
会标准化为下划线。您可能希望在此处使用basename($filename)
。