Функция почты PHP, отправляющая пустой лист Excel в виде вложения - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь отправить лист Excel в виде вложения (размером около 9 МБ), но он всегда заканчивается пустым листом Excel в письме.Я использую PHP5.6 для отправки документа XLS.Вот код

$strToEmail = 'tess@gmail.com';
$strSubject = "Successfully generated Excel";
$strBody = "Successfully generated excel ";
sendmailWithAttachement($strToEmail, $strSubject, $strBody, __DIR__, "Book2.xls" );


function sendmailWithAttachement($mailto, $subject, $message,$path, $filename) {
    $file = $path . "/" . $filename;

    $content = file_get_contents($file);
    $content = chunk_split(base64_encode($content));

    // a random hash will be necessary to send mixed content
    $separator = md5(time());

   // carriage return type (RFC)
   $eol = "\r\n";

   $random_hash = md5(date('r', time()));
   // main header (multipart mandatory)
   $headers = "From:test@test.com" . $eol;
   $headers .= "MIME-Version: 1.0" . $eol;
   $headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol;
   $headers .= "Content-Transfer-Encoding: 7bit" . $eol;
   $headers .= "This is a MIME encoded message." . $eol;

   // message
   $body = "--" . $separator . $eol;
   $body .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol;
   $body .= "Content-Transfer-Encoding: BASE64" . $eol;
   $body .= $message . $eol;

   // attachment
   $body .= "--" . $separator . $eol;
   $body .= "Content-Type: application/vnd.ms-excel; name=\"" . $filename . "\"" . $eol;
   $body .= "Content-Transfer-Encoding: 7bit" . $eol;
   $body .= "Content-Disposition: attachment" . $eol;
   $body .= $content . $eol;
   $body .= "--" . $separator . "--";

   //SEND Mail
   if (mail($mailto, $subject, $body, $headers)) {
        echo "mail send ... OK"; // or use booleans here
    } else {
        echo "mail send ... ERROR!";
        print_r( error_get_last() );
    }
}

Кроме того, я получаю это предупреждение в консоли.

WARNING: More than 1000 header fields; only using the first 1000 and ignoring the rest
...