2015-06-19 2 views
4

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

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

Целью (которая работала в более ранних версиях) является отправка сообщения на основе 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; 
} 
+0

Возможный дубликат [Ошибка с PHP-почтой(): множественные или некорректные символы перевода, найденные в дополнительных \ _header] (http://stackoverflow.com/questions/30887610/error-with-php-mail-multiple-or-malformed -newlines обретенной-в-дополнительного-заголовка) – Ankur

ответ

0

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

Множественные разрывы строк "\n\n" необходимы для отправки почты с вложениями PHP с почтой() ...

1

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

0

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

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

3) у вас еще есть несколько новых строк после "многочастной/смешанного"

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

$sFrom = "[email protected]"; 
$sReplyTo = "[email protected]"; 
$sParams = "-f [email protected]"; 
$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; 
} 
0

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

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