PHP почта с вложением - дополнительный файл: часть 1.4 - PullRequest
4 голосов
/ 06 февраля 2010

Я использую следующий код для отправки электронного письма с вложениями:

    $mime_boundary = "<<<--==+X[".md5(time())."]";

    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/mixed;\r\n";
    $headers .= " boundary=\"".$mime_boundary."\"";

    $message .= "This is a multi-part message in MIME format.\r\n\r\n";
    $message .= "--".$mime_boundary."\r\n";

    $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
    $message .= "Content-Transfer-Encoding: 7bit\r\n";
    $message .= "\r\n";
    $message .= "$message_body\r\n";
    $message .= "--".$mime_boundary."\r\n";

    foreach($attachments as $filename => $data)
    {
        $message .= "Content-Type: application/octet-stream;\r\n";
        $message .= " name=\"$filename\"\r\n";
        $message .= "Content-Transfer-Encoding: quoted-printable\r\n";
        $message .= "Content-Disposition: attachment;\r\n";
        $message .= " filename=\"$filename\"\r\n";
        $message .= "\r\n";
        $message .= chunk_split(base64_encode($data));
        $message .= "\r\n";
        $message .= "--".$mime_boundary."\r\n";
    }

    mail($email_address, $email_subject, $message, $headers);

Работает нормально, за исключением того, что дополнительный файл также прикреплен (называется «Часть 1.4»).

Есть ли способ не добавлять это?

Ура, Dan.

1 Ответ

5 голосов
/ 06 февраля 2010

IIRC последний разделитель частей должен быть --something unique--, т.е. в вашем случае

$message .= "--".$mime_boundary."--\r\n";

Но MIME-почта - более или менее решенная проблема (т. Е. Для разработчика приложений скучно, когда все сделано правильно, и раздражает, когда все сделано неправильно ;-)). Сделайте себе одолжение и используйте что-то вроде Swiftmailer или любую другую нисходящую почтовую библиотеку / класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...