0

複数の添付ファイルが付いたメールを送信しようとしています。

これは例です:
$uid = md5(uniqid(time()));
$header = "From: Test <test@test.com>\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\r\n\r\n";
$header .= "--" . $uid . "\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= "Test Email\r\n\r\n";
$header .= "--" . $uid . "\r\n";
$header .= "Content-Type: text/x-csv; name=\"1.csv\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"1.csv\"\r\n\r\n";
$header .= $csvfile1 . "\r\n\r\n";
$header .= "--" . $uid . "--";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= "Test Email\r\n\r\n";
$header .= "--" . $uid . "\r\n";
$header .= "Content-Type: text/x-csv; name=\"2.csv\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"2.csv\"\r\n\r\n";
$header .= $csvfile2 . "\r\n\r\n";
$header .= "--" . $uid . "--";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= "Test Email\r\n\r\n";
$header .= "--" . $uid . "\r\n";
$header .= "Content-Type: text/x-csv; name=\"3.csv\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"3.csv\"\r\n\r\n";
$header .= $csvfile3 . "\r\n\r\n";
$header .= "--" . $uid . "--";

そして、csvファイルの最後に次のような奇妙な文字が表示されます。
w־סֽד·ֽסמ׳fק־ןo,
‰z{­©}ךֺxn+¢”j״¶'Eט²¶*Jײֻrֵz°¶+·$j״¶'5ל†·u+¶+‰ֻ{²װj״¶',

何が問題なのですか?

ありがとう。

4

1 に答える 1

1

いくつかの問題:

  • 境界の前に改行が1つだけ存在する必要があります。あなたは2つ持っています。
  • 最後の境界の後にのみ2つのダッシュが必要です。
  • Content-Transfer-Encoding以前に新しい行が必要な場所が2つあります。
  • ファイルをbase64でエンコードするのを忘れている可能性があります。
  • あなたのコードは、ひどいコピー貼り付けの結果のように見えます。
  • 多分他。

El Yoboがコメントで言ったように、多分あなたはこれのためにライブラリを使ってみるべきです。

于 2011-06-03T12:22:40.573 に答える