Есть код отправки почты с возможностью прикрепления файла Все прекрасно работало на поддомене, когда перенес на основной, код перестал работать. То есть письма приходят, но если идет прикрепление файла, то письмо приходит пустое, если прикрепления файла нет, то пиьсмо приходит с текстом
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;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники