Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 6

Ошибка при выполнении функции mail

26.08.2016, 12:53. Показов 2259. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста разобраться вот с такой проблемой. При отправки письма с сервера через форму обратной связи на php появляется вот такая ошибка Warning: mail(): Multiple or malformed newlines found in additional_header in /home/users/9/9628229292/domains/you-bein.ru/recall_me.php on line 44. Раньше такого не было и все работало нормально, на локалке тоже все работает хорошо. Гуглила, говорят, может быть проблема в версии php на серваке. Подскажите пожалуйста, кто сталкивался с такой проблемой, как ее решить, если она вообще решаема
Вот код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php // check if fields passed are empty
 
   if(!empty($_POST['name']) and !empty($_POST['e-mail']) and !empty($_POST['payment']) 
   and !empty($_POST['four_namber'])and !empty($_POST['simple'])){
      $name = trim(strip_tags($_POST['name']));
      $email = trim(strip_tags($_POST['e-mail']));
      $payment = trim(strip_tags($_POST['payment']));
      $four_namber = trim(strip_tags($_POST['four_namber']));
      $simple = trim(strip_tags($_POST['simple']));
      $zakaz = rand (1000, 9999);
      $to = 'moibiznes.poddergka@gmail.com'; // твой e-mail
      
      if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) { // если не верный e-mail
        echo "<div class='i_false'>E-mail указан не верно!</div>"; // выводим сообщение пользователю
        exit; // выходим из дальнейшей обработки
    }  
      $email_subject = "Новый заказ  с сайта № $zakaz";
      $email_body = "Данные заполненные при оформлении \n".
 "Имя- $name \n".
 "Ваш E-mail-  $email \n".
 "Способ оплаты- $payment \n".
 "Последние 4 цифры - $four_namber";
$headers = "Новый заказ  с сайта";
$headers .= "Content-type: text/html; charset=\"utf-8\""; 
 
 
//пользователю 
$email_subject_use = "Заказ с сайта \"Твой бизнес\"";
$email_body_use = "Поздравляем вы оформили заказ на видео курс $simple. Перед оплатой проверьте правильно ли Вы заполнили поля \"способ оплаты\" и \"4 последние цифры своей карты или яндекс кошёлка\".\n Внимание! Если Вы указали другие цифры банковской карты или кошелка мы не сможем опознать платеж и выслать Вам видео курс.\n".
"Данные заполненные при оформлении \n".
 "Имя- $name \n".
 "Ваш E-mail-  $email \n".
 "Способ оплаты- $payment \n".
 "Последние 4 цифры - $four_namber \n".
 "Номер вашего заказа: $zakaz \n".
"По возможности мы просим вас сделать принскрин платежа и отправить нам это ускорит покупку вашего курса! \n".
"Если увас возникли вопросы обратитесь в нашу техническую поддержку. moibiznes.poddergka@gmail.com | whatsapp: 8-9836-394-3367 \n";
$headers_use = "Заказ с сайта \"Твой бизнес\"";
$headers_use .= "Content-type: text/html; charset=\"utf-8\""; 
 
mail($to, $email_subject, $email_body, $headers);
mail($email, $email_subject_use, $email_body_use, $headers_use);
if(mail($to,$email_subject,$email_body,$headers)){ // если отправка прошла успешно, то...
    echo "<div class='i_true'>Ваш заказ принят, проверьте почту.</div>"; // выводим пользователю сообщение
} else{ // если не отправилось по како-то причине, то...
    echo "<div class='i_false'>Не полуилось отправить сообщение</div>"; // выводим пользователю сообщение
}            
} else{ // если пустые данные пришли
    echo "<div class='i_false'>Необходимо заполнить все поля!</div>"; // выводим пользователю сообщение
}
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.08.2016, 12:53
Ответы с готовыми решениями:

Ошибка при использовании функции mail
Добрый день! Есть хостинг с сайтом на домене reg.ru. Необходимо сделать форму обратной связи. Для этого была сверстана html разметка...

Ошибка в VS при выполнении функции
Пытался вывести на экран содержимое бинарного файла через ifstream &amp; read(). При запуске вижу вот такую ошибку в VS что вижу впервые.Как...

Ошибка при выполнении барьерной функции
Здравствуйте, помогите разобраться в чем проблема. Задача: минимизировать при заданных ограничениях f(x) с точностью E методом штрафных...

4
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
26.08.2016, 15:28
Погуглив, нашел вот такое. Возможно, поможет.
Кликните здесь для просмотра всего текста

Если проштудировать diff исходников самого PHP того самого фикса - картина следующая:
При формировании заголовков в письме, перенос строки должен выглядеть либо как \r\n либо как \n.
Если между \r и \n есть какой-либо символ (там ловится \0), либо перепутан порядок символов, либо если встречается два \n\n подряд - формируется сообщение

Multiple or malformed newlines found in additional_header

Два символа \n подряд могут встретиться в заголовках, если встречается рядом два переноса строк. Допустим, заканчивается одна строка и после нее стоит еще одна пустая строка, состоящая только из переноса - получаем ошибку.

Когда привели в порядок все заголовки - пало подозрение, что PHP ругается на разделение между заголовками и телом письма (там тоже пустая строка). В конце концов получилось обойти данную фичу тем, что кодировали само тело письма в base64 и выставляли Content-Transfer-Encoding: base64
PHP ругаться перестал, письма стали отправляться, исправление костылей отложили "на потом".
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
26.08.2016, 16:48
Цитата Сообщение от vikav Посмотреть сообщение
PHP
1
2
3
mail($to, $email_subject, $email_body, $headers);
mail($email, $email_subject_use, $email_body_use, $headers_use);
if(mail($to,$email_subject,$email_body,$headers)){ // если отправка прошла успешно, то...
А вот у меня вопрос: с какой целью вы дважды одно и то же письмо отправляете?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
26.08.2016, 16:56
Цитата Сообщение от vikav Посмотреть сообщение
Multiple or malformed newlines found in additional_header
Несколько дополнительных заголовков должны быть разделены CRLF (\r\n)
http://php.net/manual/ru/function.mail.php

Добавлено через 6 минут
Цитата Сообщение от vikav Посмотреть сообщение
$headers = "Новый заказ *с сайта";
Это что за чудо заголовки???
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 6
29.08.2016, 09:14  [ТС]
спасибо за ссылку, разобралась. да, с заголовками было напутано
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2016, 09:14
Помогаю со студенческими работами здесь

Использование функции strcat_s. Ошибка при выполнении
Здравствуйте! Начал изучать С++. Пока осваиваю самые азы. В качестве учебника взял книгу А.Хортона &quot;Visual C++ 2010. Полный...

Ошибка при выполнении функции (std::bad_alloc at memory location)
При выполнении функции выскакивает ошибка: Unhandled exception at 0x77b815de in SII_V1_Lab2.exe: Microsoft C++ exception: std::bad_alloc...

Ошибка при выполнении функции "readdir"
Первый раз программирую под Linux, встретился с ошибкой Segmentation fault во время работы программы. Можете помочь ее исправить? В...

Невосстановимая ошибка Ошибка при выполнении запроса POST
Невосстановимая ошибка Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: по причине: Ошибка СУБД: Ошибка SQL: Поле...

Ошибка памяти при выполнении, при компиляции не выводит ошибки
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой строке и выводит их в обратном порядке....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru