0

私はphpexcelを使用してfile.xlsを作成してから、この小さなコードを取得してxlsを添付ファイルとして電子メールで送信しています。filename = "._folder1_admin.xls"問題は、実際のファイル名の代わりに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 に答える