mail() отправляет пустое письмо

739
27 января 2017, 08:53

Есть код отправки почты с возможностью прикрепления файла Все прекрасно работало на поддомене, когда перенес на основной, код перестал работать. То есть письма приходят, но если идет прикрепление файла, то письмо приходит пустое, если прикрепления файла нет, то пиьсмо приходит с текстом

function send_mail($mail_to, $mail_from, $thema, $html, $path, $file_name){ 
    if ($path) {  
        $fp = fopen($path,"rb");   
        if (!$fp){  
            $html .= "<br><p>Файл не отправлен!</p>";
            $file = "";
        }else{   
            $file = fread($fp, filesize($path));   
            fclose($fp);
        }
    }
    $name = $file_name;   
    $EOL = "\r\n"; 
    $boundary     = "--".md5(uniqid(time()));  
    $headers    = "MIME-Version: 1.0;$EOL";   
    $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
    $headers   .= "From:  ".$mail_from;  
    $multipart  = "--$boundary$EOL";   
    $multipart .= "Content-Type: text/html; charset=utf-8$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= $EOL; 
    $multipart .= chunk_split(base64_encode($html));   
    $multipart .=  "$EOL--$boundary$EOL";   
    $multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";   
    $multipart .= $EOL;  
    $multipart .= chunk_split(base64_encode($file));   
    $multipart .= "$EOL--$boundary--$EOL";   
    if(!mail($mail_to, $thema, $multipart, $headers)){
        return False;
    }else { 
        return True;  
    }  
  exit;  
}
$arResult['ok'] = "N";
$myFaile = ""; 
$file_name = "";
$otv = 0;
if (!empty($_FILES['upload']['tmp_name'])) { 
    $path = $_SERVER['DOCUMENT_ROOT']."/upload/".$_FILES['upload']['name']; 
    if (copy($_FILES['upload']['tmp_name'], $path)){ 
        $myFaile = $path; 
        $file_name = $_FILES['upload']['name'];
    }
}
$thm = "Тема с файлом";
$mail_to = 'Почта на которую приходит письмо с файлом';
$thm_otv = "Тема без файла";
$mail_to_otv = $_POST['email'];// тут маил на который приходит письмо без файла
if(!empty($_POST['email'])){
    $otv = 1;
}
$msg = "Текст письма с файлом";
$msg_otv = "Текст письма без файла";
$mail_from = 'Маил отправителя';
$headers = 'From: '.htmlspecialchars($_POST['email'])."\r\n".'Reply-To: '.$mail_to."\r\n".'X-Mailer: PHP/'.phpversion();
if(empty($myFaile))
{
    $arResult['ok'] = "N";
}
else
{
    if(send_mail($mail_to, $mail_from, $thm, $msg, $myFaile, $file_name))
    {
        if($otv == 1)
        {       
            $headers_otv  = "Content-type: text/html; charset=utf-8 \r\n"; 
            $headers_otv .= "From:  ad@twc.in.ua"; 
            if(mail($mail_to_otv, $thm_otv, $msg_otv, $headers_otv))
            {
                $arResult['ok'] = "Y";
            }
            else
            {
                $arResult['ok'] = "N";
            }
        }
        else
        {
            $arResult['ok'] = "Y";
        }
    }
    else
    {
        $arResult['ok'] = "N";
    }
    //unlink($myFaile);
 }
echo json_encode($arResult);
die();

js код отправки данных в php

function writeMeSubmit(form){
    //создаем экземпляр класс FormData, тут будем хранить всю информацию для отправки
    var formData = new FormData();
    //не забывайти проверить поля на заполнение
    //код проверки полей опустим, он к статье не имеет отнашение
    //присоединяем наш файл
    jQuery.each($('#upload')[0].files, function(i, file) {
        formData.append('upload', file);
    });
    //присоединяем остальные поля
    formData.append('email', $('input#email2').val());
    $.ajax({
        url: "call.php",
        type: "POST",
        dataType : "json", 
        cache: false,
        contentType: false,
        processData: false,         
        data: formData, //указываем что отправляем
        success: function(data){
            if(data.ok == 'Y'){
                $("#rez2").fadeIn(500);
                setTimeout(function(){$("#rez2").fadeOut(500);},5000);
            }else{
                $("#err2").fadeIn(500);
                setTimeout(function(){$("#err2").fadeOut(500);},5000);              
            }
        }
    });
    return false;   
}
READ ALSO
Сумма значений в столбце таблицы mysql по заданному условию

Сумма значений в столбце таблицы mysql по заданному условию

ЗдравствуйтеЕсть таблица результатов тестирования, каждая строчка содержит информацию, сколько тот или иной юзер набрал в том или ином тесте

699
Удалить часть строки

Удалить часть строки

Наверное глупый вопрос, но не знаю как это сделатьИмеем строку типа:

371
Проблемы с запросом

Проблемы с запросом

Доброго вечера, изучаю PHP по книге O'Reilly, "Создание динамических веб-сайтов

341
mail непонятный символы в письме

mail непонятный символы в письме

При отправке почты получаю в тексте письма :" раÐ! �мещение в информациоÐ �ной системе протоко

451