PHP Mail – обнаружены множественные или некорректные символы перевода строки

мы обновили нашу версию PHP и теперь получаем сообщение об ошибке «Предупреждение: mail (): множественные или неверные строки, найденные в дополнительном_header».

Я создал эксперименты с разными вещами, но не получил ничего, чтобы работать. Прошу прощения, поскольку я не очень хорошо знаком с тем, как все это работает, поэтому, пожалуйста, несите меня.

Цель (которая работала в более ранних версиях) – отправить сообщение на основе HTML (имеет,
теги и т. д.), который включает в себя вложение PDF, существующее на нашем сервере.

Если вы можете дать мне конкретные корректировки, я был бы очень признателен!

$sFrom = "[Company Name] <[Our Email]>"; $sReplyTo = "[Our Email]"; $sParams = "-f [Our Email]"; $attachment = chunk_split(base64_encode(file_get_contents($sPath))); $uid = md5(uniqid(time())); $sHeaders = "From: ".$sFrom."\n". "Reply-To: ".$sReplyTo."\n". "MIME-Version: 1.0\n". "Content-Type: multipart/mixed; boundary=\"".$uid."\"\n\n". "This is a multi-part message in MIME format.\n". "--".$uid."\n". "Content-Type: text/html; charset='iso-8859-1'\n". "Content-Transfer-Encoding: 7bit\n\n". $sMessage."\n\n". "--".$uid."\n". "Content-Type: application/pdf; name=\"".$sFileName."\"\n". "Content-Transfer-Encoding: base64\n". "Content-Disposition: attachment; filename=\"".$sFileName."\"\n\n". $attachment."\n\n". "--".$uid."--"; if (!mail($sTo, $sSubject, "", $sHeaders, $sParams)) { $bError = true; } 

Попробуйте использовать \\\n вместо \n .

из-за https://bugs.php.net/bug.php?id=68776 несколько разрывов строк больше не разрешены (или на данный момент?). Попробуйте переключиться на PEAR Mailer, PHPMailer или что-то еще.

Для пересылки php-писем с вложениями с mail () необходимо несколько разломов строк "\n\n"

1) Вы получите сообщение об ошибке для попытки добавить к неинициализированной переменной $ sMessage . Также проверьте, что другие переменные имеют ожидаемое содержимое ($ sTo, $ sSubject).

2) Вы переместили содержимое сообщения из заголовка в сообщение, но забыли добавить его в почтовую функцию, если (! Mail ($ sTo, $ sSubject, "", $ sHeaders, $ sParams)) станет if (! Mail ($ sTo , $ sSubject, $ sMessage , $ sHeaders, $ sParams))

3) После «multipart / mixed» у вас все еще есть несколько строк перевода строки,

4) Удалите строку «Это многочастное сообщение в формате MIME». Здесь я обновил ваш код:

 $sFrom = "me@aju.ro"; $sReplyTo = "me@aju.ro"; $sParams = "-f me@aju.ro"; $attachment = chunk_split(base64_encode(file_get_contents($sPath))); $uid = md5(uniqid(time())); $sHeaders = "From: ".$sFrom."\n". "Reply-To: ".$sReplyTo."\n". "MIME-Version: 1.0\n". "Content-Type: multipart/mixed; boundary=\"".$uid."\"\n". "--".$uid."\n". "Content-Type: text/html; charset='iso-8859-1'\n". "Content-Transfer-Encoding: 7bit\n\n". $sMessage="\n\n". "--".$uid."\n". "Content-Type: application/pdf; name=\"".$sFileName."\"\n". "Content-Transfer-Encoding: base64\n". "Content-Disposition: attachment; filename=\"".$sFileName."\"\n\n". $attachment."\n\n". "--".$uid."--"; if (!mail($sReplyTo, $sSubject, $sMessage, $sHeaders, $sParams)) { $bError = true; } 

Это изменение градиента php. Риск безопасности в функции PHP mail () был исправлен, а дополнительные строки больше не разрешены.

Удалите несколько новых строк в аргументе дополнительных_headers. Они считаются «множественными или искаженными новостями»: \ r \ r, \ r \ 0, \ r \ n \ r \ n, \ n \ n, \ n \ 0.