PHP вложения электронной почты - PullRequest
0 голосов
/ 03 июня 2011

Я пытаюсь отправить электронное письмо с несколькими вложениями.

Это пример:
$uid = md5(uniqid(time()));<br> $header = "From: Test <test@test.com>\r\n";<br> $header .= "MIME-Version: 1.0\r\n";<br> $header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\r\n\r\n";<br> $header .= "--" . $uid . "\r\n";<br> $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";<br> $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";<br> $header .= "Test Email\r\n\r\n";<br> $header .= "--" . $uid . "\r\n";<br> $header .= "Content-Type: text/x-csv; name=\"1.csv\"\r\n";<br> $header .= "Content-Transfer-Encoding: base64\r\n";<br> $header .= "Content-Disposition: attachment; filename=\"1.csv\"\r\n\r\n";<br> $header .= $csvfile1 . "\r\n\r\n";<br> $header .= "--" . $uid . "--";<br> $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";<br> $header .= "Test Email\r\n\r\n";<br> $header .= "--" . $uid . "\r\n";<br> $header .= "Content-Type: text/x-csv; name=\"2.csv\"\r\n";<br> $header .= "Content-Transfer-Encoding: base64\r\n";<br> $header .= "Content-Disposition: attachment; filename=\"2.csv\"\r\n\r\n";<br> $header .= $csvfile2 . "\r\n\r\n";<br> $header .= "--" . $uid . "--";<br> $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";<br> $header .= "Test Email\r\n\r\n";<br> $header .= "--" . $uid . "\r\n";<br> $header .= "Content-Type: text/x-csv; name=\"3.csv\"\r\n";<br> $header .= "Content-Transfer-Encoding: base64\r\n";<br> $header .= "Content-Disposition: attachment; filename=\"3.csv\"\r\n\r\n";<br> $header .= $csvfile3 . "\r\n\r\n";<br> $header .= "--" . $uid . "--";

И я получаю некоторые странные символы в конце файлов CSV, что-то вроде этого:
w־סֽד·ֽסמ׳fק־ןo,<br> ‰z{­©}ךֺxn+¢”j״¶'Eט²¶*Jײֻrֵz°¶+·$j״¶'5ל†·u+¶+‰ֻ{²װj״¶',

В чем может быть проблема?

Спасибо.

1 Ответ

1 голос
/ 03 июня 2011

Некоторые проблемы:

  • Перед границей должна быть только одна новая строка. У вас есть 2.
  • Вы должны иметь 2 тире только после последней границы.
  • В 2 местах Content-Transfer-Encoding должна быть новая строка.
  • Вы возможно забыли, что base64 закодирует ваши файлы.
  • Ваш код выглядит как результат какого-то ужасного копирования.
  • Может быть, другой.

Как сказал Эль Йобо в комментарии, возможно, вам следует попробовать использовать для этого библиотеку.

...