За последние 24 часа нас посетили 22328 программистов и 1140 роботов. Сейчас ищут 657 программистов ...

Помогите с PHP mail, не отправляется файл

Тема в разделе "Сделайте за меня", создана пользователем Be3yn4ik, 18 дек 2021.

Метки:
  1. Be3yn4ik

    Be3yn4ik Новичок

    С нами с:
    18 дек 2021
    Сообщения:
    3
    Симпатии:
    0
    Собственно вот такая проблема.
    На почту приходит все в одну строку, а файлик не приходит.
    Где-то в коде ошибка, помогите пожалуйста.
    upload_2021-12-18_18-39-7.png

    HTML:
    1. <form class="obratnuj-zvonok" autocomplete="off" action='/send.php' method='post'>
    2. <div class="form-zvonok">
    3.   <div>
    4.  
    5.     <input type='text' name='name' required placeholder="Имя"></div>
    6.   <div>
    7.  
    8.     <input type='text' name='phone' required placeholder="Телефон"></div>
    9.   <div>
    10.  
    11.     <input type='text' name='email' placeholder="email">
    12.   </div>
    13.    <input type=file name=mail_file maxlength=64>
    14.   <input class="bot-send-mail" type='submit' value='Послать заявку'>
    15.  
    16. </div>
    17. </form>
    PHP:
    1. <?php
    2. $to = "sk@yandex.ru";
    3. $tema = "заявка с систем охлаждения";
    4.  
    5. if ($_POST['name']!='')
    6.     {$message .= "Имя: ".$_POST['name']."<br>";}
    7. if ($_POST['phone']!='')
    8.     {$message .= "Телефон: ".$_POST['phone']."<br>";}
    9. if ($_POST['email']!='')
    10.     {$message .= "Email: ".$_POST['email']."<br>";}
    11. if ($_POST['Message']!='')
    12.     {$message .= "Сообщение: ".$_POST['Message']."<br>";}
    13.  
    14.   $picture = "";
    15.   // Если поле выбора вложения не пустое - закачиваем его на сервер
    16.   if (!empty($_FILES['mail_file']['tmp_name']))
    17.   {
    18.     // Закачиваем файл
    19.     $path = $_FILES['mail_file']['name'];
    20.     if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
    21.   }
    22.  
    23.   $msg = $_POST['mail_msg'];
    24.  
    25. if(empty($picture)) mail($to, $tema, $message);
    26.   else send_mail($to, $tema, $message, $picture);
    27.  
    28.   function send_mail($to, $tema, $html, $path)
    29.   {
    30.     $fp = fopen($path,"r");
    31.     if (!$fp)
    32.     {
    33.       print "Файл $path не может быть прочитан";
    34.       exit();
    35.     }
    36.     $file = fread($fp, filesize($path));
    37.     fclose($fp);
    38.    
    39.     $boundary = "--".md5(uniqid(time())); // генерируем разделитель
    40.     $headers .= "MIME-Version: 1.0\n";
    41.     $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
    42.    
    43.     $multipart .= "--$boundary\n";
    44.     $kod = 'koi8-r'; // или $kod = 'windows-1251';
    45.     $multipart .= "Content-Type: text/html; charset=$kod\n";
    46.     $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
    47.     $multipart .= "$html\n\n";
    48.  
    49.    $message_part = "--$boundary\n";
    50.     $message_part .= "Content-Type: application/octet-stream\n";
    51.     $message_part .= "Content-Transfer-Encoding: base64\n";
    52.     $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
    53.     $message_part .= chunk_split(base64_encode($file))."\n";
    54.     $multipart .= $message_part."--$boundary--\n";
    55.  
    56.     if(!mail($to, $tema, $multipart, $headers))
    57.     {
    58.       echo "К сожалению, письмо не отправлено";
    59.       exit();
    60.     }
    61.   }
    62. ?>
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.750
    Симпатии:
    1.322
    Адрес:
    Лень
  3. Be3yn4ik

    Be3yn4ik Новичок

    С нами с:
    18 дек 2021
    Сообщения:
    3
    Симпатии:
    0
    Нее, PHPmailer не подходит.
    Надо этот код поправить.
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
  6. Be3yn4ik

    Be3yn4ik Новичок

    С нами с:
    18 дек 2021
    Сообщения:
    3
    Симпатии:
    0
    тут про smtp и phpmailer
    --- Добавлено ---
    а тут только файл текстовый отправляет.
    --- Добавлено ---
    У меня код написан на отправку любого формата файла. Я не прошу вас кидать другие статьи, в которых все не то.
    Я вас прошу этот поправить, пожалуйста.
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Это пофиг. Главное, там четко показан формат письма с вложением.

    Это раздел для наивных. Или поработайте сами, или идите во фриланс. В вашем коде бесплатно копаться никто не будет, уж извините.
    --- Добавлено ---
    Кстати, код – фигня! Одна кодировка текстовой части письма/исходника чего стоит!
    --- Добавлено ---
    И формат письма абсолютно не выдержан.
    --- Добавлено ---
    Кстати, пока не научитесь себя защищать от пользовательского ввода, лучше забудьте про использование HTML-формата. Тем более что для «нотификаций» этот формат объективно не нужен!
    --- Добавлено ---
    :eek: Уверены, что это значение пишется именно так? Про то, куда делось само quoted-printable-кодирование, уже не спрашиваю. С таким подходом к программированию далеко не уедешь.