@del993788

По какой причине появляется ошибка «mail(): Multiple or malformed newlines found in additional_header»?

Здравствуйте. Буду краток. С open server письма без проблем уходят, а с хостинга не хотят. Пишет ошибку "Warning: mail(): Multiple or malformed newlines found in additional_header in /srv/disk12/2042526/www/мой сайт/contacts.php on line 70"

Вот код:
<?php
$name = $_POST['nameFF'];
$email = $_POST['contactFF'];
$number = $_POST['number'];
$names = $_POST['nameSS'];
$mess = $_POST['messageFF'];

$error = "no"; //флаг наличия ошибки

if($number == ''){
echo 'notnumber';
$error = "yes";     
                } else if(!$number || strlen($number)<10 || strlen($number)>14) {
echo 'errornumber';
$error = "yes";
}

if($email == ''){
echo 'notmail';
$error = "yes";     
                } else if(!(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email)))
{
	echo 'errormail';
	$error = "yes";
}
		
if($error=="no") {
    $subject = "QQQQQ";
    $mailto = "qqignat@gmail.com"; // кому отправляем
    $message = "\nИмя: $name \nПочта $email \nТелефон: $number \nФирма: $names \nСообщение: $mess";
    $separator = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$separator}x";
    $eol = PHP_EOL;
    $filesize = '';

    
    // Заголовки
    $headers = 'From: Отправник' . $eol;
    $headers .= 'MIME-Version: 1.0' . $eol;
    $headers .= 'Content-Type: multipart/mixed; boundary=' . $separator . $eol . $eol;
    $headers .= 'Content-Transfer-Encoding: 7bit' . $eol;
    $headers .= 'This is a MIME encoded message.' . $eol . $eol;
    
    // Сообщение
    $headers .= '--' . $separator . $eol;
    $headers .= 'Content-Type: text/plain; charset=utf-8' . $eol;
    $headers .= 'Content-Transfer-Encoding: 8bit' . $eol . $eol;
    $headers .= $message . $eol . $eol;
    
    // Прикрепляем файлы
    $files = $_FILES['fileFF'];
    for($i = 0; $i < count($files['name']); $i++) {
        if(is_uploaded_file($files['tmp_name'][$i])) {
            $file = $files['tmp_name'][$i];
            $filename = $files['name'][$i];
            $filetype = $files['type'][$i];
            $filesize += $files['size'][$i];
            
            $content = chunk_split(base64_encode(file_get_contents($file)));
            $headers .= '--' . $separator . $eol;
            $headers .= 'Content-Type: '.$filetype.'; name=' . $filename . $eol;
            $headers .= 'Content-Transfer-Encoding: base64' . $eol;
            $headers .= 'Content-Disposition: attachment; filename=' . $filename . $eol . $eol;
            $headers .= $content . $eol . $eol;
            $headers .= '--' . $mime_boundary . $eol;
            
        }
    }   
    // Отправка сообщения
mail($mailto, $subject, '', $headers);
echo 'ok';

}


Я гуглил уже, понял, что я не один такой, но увы так и не разобрался. Прошу помощи у вас.
  • Вопрос задан
  • 359 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Я полагаю, что с этой проблемой сталкиваются все, кто пытается запихать тело письма в заголовки. Мухи - отдельно, котлеты - отдельно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы