在电子邮件发送之前,base64_encode是否重命名我的文件?

时间:2013-01-19 20:40:02

标签: php

我正在使用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";

1 个答案:

答案 0 :(得分:2)

下面:

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

您要将文件名设置为$filenme的内容,并且由于./folder1/admin.xls无效,因此/会标准化为下划线。您可能希望在此处使用basename($filename)