php mail attachment - ошибка - как отладить

1

Я ищу и пытаюсь использовать разные методы для создания php-почты с вложением, которое можно сохранить с помощью Client (Outlook). Это не работает, а я не знаю почему?

Если скрипт отправит письмо с этим кодом:

    $result  = mail($mail_to, $subject, $headers);

Я получил электронное письмо с встроенным кодированным вложением base64 и, если его использовать, следующим образом:

    $result  = mail($mail_to, $subject, "", $headers); 

или

    $result  = mail($mail_to, $subject, $text, $headers); 

Я получил ошибку PHP: "false" - почта не могла отправить.

Так что это не так и Mailserverproblem, я думаю, и из headersview, я думаю, он должен работать, и я не получаю почтовой ошибки на сайте Linux.

Часть из письма, прилагаемого к приложению:

    MIME-Version: 1.0
    From: [email protected]
    Content-Type: multipart/mixed; boundary="F34A3E8D822EE5A70EEDE9C3C143243C"

    --F34A3E8D822EE5A70EEDE9C3C143243C
    Content-Type: multipart/alternative; boundary="A0403290562B2A2F19FB62E48C51BE33"

    --A0403290562B2A2F19FB62E48C51BE33
    Content-Type: text/plain
    Content-Transfer-Encoding: 8bit

    Hello Mr. Xyz,
    Some stupid text as an example.

    --A0403290562B2A2F19FB62E48C51BE33--

    --F34A3E8D822EE5A70EEDE9C3C143243C
    Content-Type: application/CSV; charset="ISO-8859-1"; name="trouble.csv"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="trouble.csv"

    ...
    YWNodW5nIG5pY2h0IGVyZm9yZGVybGljaCAvIG3DtmdsaWNoIjsiIjsiIjsK

    --F34A3E8D822EE5A70EEDE9C3C143243C--

Соответствующий PHP-код:

 $text = "Hello Mr. Xyz,". $nl. "Some stupid text as an example.". $nl; $content = chunk_split(base64_encode($file)); $headers = "MIME-Version: 1.0". $nl; $headers.= "From: ". $mail_from. $nl; $headers.= "Content-Type: multipart/mixed; boundary=\"". $boundary1. "\"". $nl. $nl; $headers.= "--". $boundary1. $nl; $headers.= "Content-Type: multipart/alternative; boundary=\"". $boundary2. "\"". $nl. $nl; $headers.= "--". $boundary2. $nl; $headers.= "Content-Type: text/plain". $nl; $headers.= "Content-Transfer-Encoding: 8bit". $nl. $nl; $headers.= $text. $nl; $headers.= "--". $boundary2. "--". $nl. $nl; $headers.= "--". $boundary1. $nl. $nl; $headers.= "Content-Type: application/excel; charset=\"ISO-8859-1\"; name=\"xyz.csv\"". $nl; $headers.= "Content-Transfer-Encoding: base64". $nl; $headers.= "Content-Disposition: attachment; filename=\"xyz.csv\"". $nl. $nl; $headers.= $content. $nl; $headers.= "--". $boundary1. "--". $nl;

Итак, где ошибка? Как я могу отлаживать такую ситуацию? спасибо заранее...

Показать ещё 1 комментарий
Теги:
csv
email
email-attachments

1 ответ

0
Лучший ответ

Это работает...

        $text     = "Hello Mr. Xyz," . $crnl . "Some stupid text as an example."                . $crnl;
        $content  = chunk_split(base64_encode($file));

        $headers  = "MIME-Version: 1.0"                                                         . $crnl;
        $headers .= "From: " . $mail_from                                                       . $crnl;

        $headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary1 . "\""            . $nl . $crnl;
        $headers .= "Content-Type: text/plain"                                                  . $nl;
        $headers .= "--" . $boundary1                                                           . $crnl;
        $headers .= 'Content-Length: '.strlen($text)                                            . $crnl;
        $headers .= "Content-Transfer-Encoding: 8-bit"                                          . $nl . $crnl;
        $headers .= $text;
        $headers .= "--" . $boundary1                                                           . $crnl;

        $headers .= "Content-Type: application/excel; charset=\"ISO8859-1\"; name=\"xyz.csv\""  . $nl . $crnl;
        $headers .= "--" . $boundary1                                                           . $crnl;
        $headers .= "Content-Disposition: attachment; filename=\"xyz.csv\""                     . $crnl;
        $headers .= 'Content-Length: ' . strlen($content)                                       . $crnl;
        $headers .= "Content-Transfer-Encoding: base64"                                         . $nl . $crnl;
        $headers .= $content;
        $headers .= "--" . $boundary1 . "--"  

... с небольшой ошибкой. У меня есть дополнительное внимание, но на данный момент все в порядке. Еще одна вещь - более продолжительная игра с "\n", "\ r\n" и смесь обоих в правильных местах (линиях).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню