• Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, я понимаю. Но Вы бы могли наглядно сказать где путь прописать хоть? А дальше уже может сам разберусь. Сложно конечно в этом нечего не понимать(
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, а может эту мессиво подправить?? Подскажите где в этом месиве задать путь куда бы ложился файл и как ограничить его расширениями и вопрос будет решён. Я скажу начальству что файлы грузить можно будет, они конечно не скажут спасибо и придумают ещё какую нить фигню, может перестанут мозг выносить и дадут мне заниматься ремонтом компов и дальше, так как уже тут завал. А в дальнейшем я подучу php и попробую сам написать формы или разобраться в написании их. Спасибо большое.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Доброго утра! Видимо так у Вас и не получилось с этой формой.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, К сожалению я не могу их почитать так как в админ панеле их нету. А хостер сомневаюсь что предоставит. Надо офф письмо писать им.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Ну видите, не понятно что Вам надо править в вашем коде. Так как не понятно почему он не отрабатывает. Может просто в этом месиве подправить и Вам не придётся тратить много времени разбирая что не так работает в Вашем коде.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, это мессиво как то отрабатывает. А можете подсказать в каком поле настроить куда файл будет попадать на сервер и ограничить в 5 мб файл. Или что бы оно затирало сразу за собой. Или это очень трудно так на глаз увидеть?
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Да как у Вас будет получатся то посмотрите пожалуйста. Может за это время я ещё где найду как это реализовать.

    Вот отправщик который 100 процентов отправляет картинку и текст и всё устраивает.
    Не строю огромных надежд на то что получится сделать рамки загрузки определённых форматов файлов.
    Главное что бы он или удалял за собой файл который прекрипили или же где прописать определённый путь в который он будет ложиться файл. Спасибо огроменное.

    <?php
    if (isset($_POST['nameFF'])) {$nameFF = $_POST['nameFF'];}
    if (isset($_POST['mailFF'])) {$mailFF = $_POST['mailFF'];}
    if (isset($_POST['addressFF'])) {$addressFF = $_POST['addressFF'];}
    if (isset($_POST['messFF'])) {$messFF = $_POST['messFF'];}
    if (isset($_POST['mail_file'])) {$mail_file = $_POST['mail_file'];}
    
    $picture = ""; 
     
     function send_mail($to, $subject, $html, $path) 
    
      { 
    
        $fp = fopen($path,"r"); 
    
        if (!$fp) 
    
        { 
    
          print "Файл $path не может быть прочитан"; 
    
          exit(); 
    
        } 
    
        $file = fread($fp, filesize($path)); 
    
        fclose($fp); 
    
        
    
        $boundary = "--".md5(uniqid(time())); // генерируем разделитель 
    
        $headers .= "MIME-Version: 1.0\n"; 
    
        $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"; 
    
        $multipart .= "--$boundary\n"; 
    
        $kod = 'utf-8'; // или $kod = 'windows-1251'; 
    
        $multipart .= "Content-Type: text/html; charset=$kod\n"; 
    
        $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n"; 
    
        $multipart .= "$html\n\n"; 
    
    
    
        $message_part = "--$boundary\n"; 
    
        $message_part .= "Content-Type: application/octet-stream\n"; 
    
        $message_part .= "Content-Transfer-Encoding: base64\n"; 
    
        $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n"; 
    
        $message_part .= chunk_split(base64_encode($file))."\n"; 
    
        $multipart .= $message_part."--$boundary--\n"; 
    
    
    
        if(!mail($to, $subject, $multipart, $headers)) 
    
        { 
    
          echo "К сожалению, письмо не отправлено"; 
    
          exit(); 
    
        } 
    
      } 
       
    function clear_data($vvod)
    {
    return trim(strip_tags($vvod));	
    }
    $nameFF = clear_data($_POST['nameFF']);
    $mailFF = clear_data($_POST['mailFF']);
    $addressFF = clear_data($_POST['addressFF']);
    $messFF = clear_data($_POST['messFF']);
    $mail_file = clear_data($_POST['mail_file']);
    
    $to = "почта на которую отправляет";// Переменная to равна переменной email, т.е. файл будет отправляться на тот адрес, который будет вбит в форму.
    $headers = "Content-type: text/plain; charset = utf-8"; 
    $subject = "Наименование организации";
    $subject = "Заполнена контактная форма";
    $message = "<br />  <b>Фамилия Имя Отчество:</b> $nameFF <br />  <b>Электронная почта:</b> $mailFF <br />  <b>Адрес места жительства:</b> $addressFF <br />  <b>Cообщение:</b> $messFF <br />  <b>Дополнительные документы и (или) сведения:</b> $mail_file";
      if (!empty($_FILES['mail_file']['tmp_name'])) 
    
      { 
    
        // Закачиваем файл 
    
        $path =  $_FILES['mail_file']['name']; 
    
        if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path; 
    
      } 
    
    if(empty($picture))
    {
    				$send = mail ($to, $subject, $message, $headers);
    					if ($send == "true")
    					{
    					echo "Ваше сообщение успешно отправлено, спасибо!.<br>\n";
    					}
    						else 
    						{
    						echo "Сообщение не отправлено. Приносим свои извинения. Видимо сервер не может обработать ваше сообщение, скопируйте этот email (мыло) и отправьте из своей почты. ";
    						}
    				}
    
    else
    {
    			 	send_mail($to, $subject, $message, $picture); 
    			 	echo "Ваше сообщение успешно отправлено, спасибо!"; 
    				}
    
    ?>
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Как и писал ранее я не занимаюсь сайтами. Я занимаюсь системами и ремонтом пк и тд. И сложно вот так взять начать изучать всё это при том что это нужно срочно. Беларусь блин, страна для жизни. Заставляют делать то с чем ты не связан полностью. Если я скину сюда форму то Вы бы смогли помочь сделать так что бы она хотя бы чистила файлы после отправки которые в ней прикрепили?? Спасибо большое.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, А может всё же тот рабочий файл подправить возможно??? То там хоть проходило текст и отправления. Но не разобрался как добавить форматы и что бы оно не грузила в сервер а отправляло или удаляло потом файл который был загружен после отправки.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, А может я что то в самом файле накосячил??? Я там капсом в поле написал где ставлю эмейл почты на которую отправляю. Всё же верно да по этим 2 файлам??

    Файл форма
    <table>
      <span style="font-size: 18px;"><b><p>Электронное обращение для граждан</p></b></span>
      <p>Если вы хотите получить ответы на интересующие Вас вопросы, заполните эту форму. Мы свяжемся с вами в ближайшее время.</p>
    <p><b>Пожалуйста, заполните все обязательные поля:</p></b>
    <tr>
    <form method="post" action="KMail.php" enctype='multipart/form-data'>
    <div id="form3">
    <div class="inp">
    <p><b>Фамилия, имя, отчество (если таковое имеется) / Прозвiшча, iмя, iмя па-бацьку :</b></p>
    <input class="inp-f" type="text" name="name" value="" required/> 
    <div class="error"> </div>
    </div>
    <div class="inp">
    <p><b>Ваш E-mail:</b></p>
    <input class="inp-f" type="text" name="mail" value="" required/> 
    <div class="error"> </div>
    </div>
    <div class="inp">
    <p><b>Адрес места жительства (места пребывания) / Адрас месца жыхарства (месца знаходжання):</b></p>
    <input class="inp-f" type="text" name="address" value=""required /> 
    <div class="error"> </div>
    </div>
    <p><b>Cообщение / Паведамленне:</b></p>
    <div class="inp"><textarea required style="margin: 0px; width: 421px; height: 185px;" name="mess"></textarea> 
    <div class="error"> </div>
    </div>
    <b><p>Дополнительные документы и (или) сведения /Дадатковыя дакументы і (або) звесткі:</p></b>
    <p>(Разрешенные расширения файлов: jpg,.gif,.jpeg,.png,.doc,.txt,.pdf,.xls,.docx,.xlsx,.rar)</p>
    <p>Максимальный размер файла 5 MB.</p>
    <input type="file" name="mail_file[]"  maxlength="64">
    </div>
    <div class="inp"><br /><input class="btn" title="Отправить" name="submit" type="submit" value="ОТПРАВИТЬ" /></div>
    <p> </p>
    </form></td>
    </tr>
    </tbody>
    </table>


    Файл отправщик
    <?php
    error_reporting(-1);
    	class KMail
    	{
        private $bound;
    
        private $header;
    
        private $subject = '(No subject)';
    
        private $adress = [];
    
        private $body;
    
        public function __construct($text)
        {
            $this->addBodyMessage($text);
            $this->bound();
        }
    
        private function sendMailUtf8($adress, $subject, $message, $header)
        {
            return mail($adress, '=?UTF-8?B?' . base64_encode($subject) . '?=', $message,
                'MIME-Version: 1.0' . PHP_EOL . $header);
        }
    
        public function send()
        {
            if (count($this->adress) === 0) {
                throw new \Exception('Отсутствует адресат');
            }
            $this->getHeader();
            foreach ($this->adress as $adress) {
                $this->sendMailUtf8($adress, $this->getSubject(), $this->getBody(), $this->getHeader());
            }
        }
    
        public function addAdress($mail)
        {
            $this->adress[] = $mail;
            return $this;
        }
    
        private function addBodyMessage($text)
        {
            $this->body .= '--' . $this->bound() . PHP_EOL .
                'Content-Type: text/plain; charset="UTF-8"' . PHP_EOL .
                'Content-Disposition: inline' . PHP_EOL .
                'Content-Transfer-Encoding: base64' . PHP_EOL . PHP_EOL .
                chunk_split(base64_encode($text)) . PHP_EOL;
        }
    
        public function addFile($fileName, $fileStream)
        {
            $this->body .= PHP_EOL . '--' . $this->bound() . PHP_EOL .
                'Content-Type: application/octet-stream; name="' . $fileName . '"' . PHP_EOL .
                'Content-Disposition: attachment;' . PHP_EOL .
                ' filename="' . $fileName . '"' . PHP_EOL .
                'Content-Transfer-Encoding: base64' . PHP_EOL . PHP_EOL . chunk_split(base64_encode($fileStream));
    
            return $this;
        }
    
        private function endBody()
        {
            return '--' . $this->bound() . '--';
        }
    
        private function getBody()
        {
            return $this->body . $this->endBody();
        }
    
        private function bound()
        {
            if (!$this->bound) {
                $this->bound = '_=_Multipart_Boundary_' . substr(md5(uniqid()), 0, 8);
            }
    
            return $this->bound;
        }
    
        public function setSubject($subject)
        {
            if ($subject) {
                $this->subject = $subject;
            }
    
            return $this;
        }
    
        private function getSubject()
        {
            return $this->subject;
        }
    
        private function getHeader()
        {
            if (!$this->header) {
                $this->header = 'Content-Type: multipart/mixed; boundary="' . $this->bound() . '"' . PHP_EOL . 'X-Mailer: PHP' . PHP_EOL . 'Reply-To: No reply' . PHP_EOL;
            }
            return $this->header;
        }
    
        public function debug()
        {
            echo '<pre>' . print_r($this, true) . '</pre>';
        }
    	}
    
    	
    
    
    
    echo '<pre>' . print_r($_POST, true) . '</pre>';
    echo '<pre>' . print_r($_FILES, true) . '</pre>';
    
    function clear_data($str)
    {
      return trim(strip_tags($str));	
    }
    
    $name = clear_data($_POST['name']);
    $mail = clear_data($_POST['mail']);
    $address = clear_data($_POST['address']);
    $mess = clear_data($_POST['mess']);
    
    $message = "<br />  <b>Фамилия Имя Отчество:</b> $name <br />  <b>Электронная почта:</b> $mail <br />  <b>Адрес места жительства:</b> $address <br />  <b>Cообщение:</b>  $mess <br />  <b>Дополнительные документы и (или) сведения:</b>";
    $subject = "Заполнена контактная форма";
    $to = "ПОЧТА НА КОТОРУЮ НУЖНО ОТПРАВЛЯТЬ";
    
    $test = new KMail(message);
    
    $exts = ['jpg', 'gif', 'jpeg', 'png', 'doc', 'txt', 'gif', 'pdf', 'docx', 'xlsx','rar']; // добавить по вкусу
    
    $test->addAdress($to);
    foreach ($_FILES['mail_file']['tmp_name'] as $key => $file) {
      $info = pathinfo($file);
      if (filesize($file) <= 5242880 && in_array($info['extension'], $exts)) {
        $test->addFile($_FILES['mail_file']['name'][$key], file_get_contents($file));
      } else {
    	  Некорректный формат файла
        // тут можно написать что файл не канает
      }
    }
    
    $test->setSubject($subject)
    $test->send();
    #$test->debug();
    
    ?>
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, при попытке отправки сразу HTTP ERROR 500.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Спасибо. Всё сделал. Сейчас протестирую.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, я уже запутался. Куда и где мне что добавлять?

    } else {
    // тут можно написать что файл не канает
    }
    Вот сюда добавляю что Некорректный формат файла.
    А error_reporting(-1); куда в коде?
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, А где конкретнее накосячил?? А ещё такой вопрос ( // тут можно написать что файл не канает ) А где там что написать что Некорректный формат файла?
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Вот так вот правильно???? Больше не где не каких ошибок не допустил?

    <?php
    	class KMail
    	{
        private $bound;
    
        private $header;
    
        private $subject = '(No subject)';
    
        private $adress = [];
    
        private $body;
    
        public function __construct($text)
        {
            $this->addBodyMessage($text);
            $this->bound();
        }
    
        private function sendMailUtf8($adress, $subject, $message, $header)
        {
            return mail($adress, '=?UTF-8?B?' . base64_encode($subject) . '?=', $message,
                'MIME-Version: 1.0' . PHP_EOL . $header);
        }
    
        public function send()
        {
            if (count($this->adress) === 0) {
                throw new \Exception('Отсутствует адресат');
            }
            $this->getHeader();
            foreach ($this->adress as $adress) {
                $this->sendMailUtf8($adress, $this->getSubject(), $this->getBody(), $this->getHeader());
            }
        }
    
        public function addAdress($mail)
        {
            $this->adress[] = $mail;
            return $this;
        }
    
        private function addBodyMessage($text)
        {
            $this->body .= '--' . $this->bound() . PHP_EOL .
                'Content-Type: text/plain; charset="UTF-8"' . PHP_EOL .
                'Content-Disposition: inline' . PHP_EOL .
                'Content-Transfer-Encoding: base64' . PHP_EOL . PHP_EOL .
                chunk_split(base64_encode($text)) . PHP_EOL;
        }
    
        public function addFile($fileName, $fileStream)
        {
            $this->body .= PHP_EOL . '--' . $this->bound() . PHP_EOL .
                'Content-Type: application/octet-stream; name="' . $fileName . '"' . PHP_EOL .
                'Content-Disposition: attachment;' . PHP_EOL .
                ' filename="' . $fileName . '"' . PHP_EOL .
                'Content-Transfer-Encoding: base64' . PHP_EOL . PHP_EOL . chunk_split(base64_encode($fileStream));
    
            return $this;
        }
    
        private function endBody()
        {
            return '--' . $this->bound() . '--';
        }
    
        private function getBody()
        {
            return $this->body . $this->endBody();
        }
    
        private function bound()
        {
            if (!$this->bound) {
                $this->bound = '_=_Multipart_Boundary_' . substr(md5(uniqid()), 0, 8);
            }
    
            return $this->bound;
        }
    
        public function setSubject($subject)
        {
            if ($subject) {
                $this->subject = $subject;
            }
    
            return $this;
        }
    
        private function getSubject()
        {
            return $this->subject;
        }
    
        private function getHeader()
        {
            if (!$this->header) {
                $this->header = 'Content-Type: multipart/mixed; boundary="' . $this->bound() . '"' . PHP_EOL . 'X-Mailer: PHP' . PHP_EOL . 'Reply-To: No reply' . PHP_EOL;
            }
            return $this->header;
        }
    
        public function debug()
        {
            echo '<pre>' . print_r($this, true) . '</pre>';
        }
    	}
    
    	
    
    
    
    echo '<pre>' . print_r($_POST, true) . '</pre>';
    echo '<pre>' . print_r($_FILES, true) . '</pre>';
    
    function clear_data($str)
    {
      return trim(strip_tags($str));	
    }
    
    $name = clear_data($_POST['name']);
    $mail = clear_data($_POST['mail']);
    $address = clear_data($_POST['address']);
    $mess = clear_data($_POST['mess']);
    
    $message = "<br />  <b>Фамилия Имя Отчество:</b> $name <br />  <b>Электронная почта:</b> $mail <br />  <b>Адрес места жительства:</b> $address <br />  <b>Cообщение:</b>  $mess <br />  <b>Дополнительные документы и (или) сведения:</b>";
    $subject = "Заполнена контактная форма";
    $to = "Почта на которую надо отправить";
    
    $test = new KMail(message);
    
    $exts = ['jpg', 'gif', 'jpeg', 'png', 'doc', 'txt', 'gif', 'pdf', 'docx', 'xlsx','rar']; // добавить по вкусу
    
    $test->addAdress($to);
    foreach ($_FILES['mail_file']['tmp_name'] as $key => $file) {
      $info = pathinfo($file);
      if (filesize($file) <= 5242880 && in_array($info['extension'], $exts)) {
        $test->addFile($_FILES['mail_file']['name'][$key], file_get_contents($file));
      } else {
        // тут можно написать что файл не канает
      }
    }
    
    $test->setSubject($subject)
    $test->send();
    #$test->debug();
    
    ?>
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Подправил. У меня весь верхний код до этого кода серый. Вот так получилось. Где то ещё не так накасячил я??

    <?php
    
    echo '<pre>' . print_r($_POST, true) . '</pre>';
    echo '<pre>' . print_r($_FILES, true) . '</pre>';
    
    function clear_data($str)
    {
      return trim(strip_tags($str));	
    }
    
    $name = clear_data($_POST['name']);
    $mail = clear_data($_POST['mail']);
    $address = clear_data($_POST['address']);
    $mess = clear_data($_POST['mess']);
    
    $message = "<br />  <b>Фамилия Имя Отчество:</b> $name <br />  <b>Электронная почта:</b> $mail <br />  <b>Адрес места жительства:</b> $address <br />  <b>Cообщение:</b>  $mess <br />  <b>Дополнительные документы и (или) сведения:</b>";
    $subject = "Заполнена контактная форма";
    $to = "почта на которую надо отправить";
    
    $test = new KMail(message);
    
    $exts = ['jpg', 'gif', 'jpeg', 'png', 'doc', 'txt', 'gif', 'pdf', 'docx', 'xlsx','rar']; // добавить по вкусу
    
    $test->addAdress($to);
    foreach ($_FILES['mail_file']['tmp_name'] as $key => $file) {
      $info = pathinfo($file);
      if (filesize($file) <= 5242880 && in_array($info['extension'], $exts)) {
        $test->addFile($_FILES['mail_file']['name'][$key], file_get_contents($file));
      } else {
        // тут можно написать что файл не канает
      }
    }
    
    $test->setSubject($subject)
    $test->send();
    #$test->debug();
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, А ну да я тут менял. Но даже когда вернул на Ваше значение то нечего не поменялось.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, Да нет. В Вашем файле так и написано. Я там нечего не трогал. Так а мой файл сложно будет подправить? А то он 100 процентов работает.
  • Почему не отправляется файл прикрепления через SMTP?

    @Wyfer Автор вопроса
    Дмитрий, А такой вопрос. А эту часть если я запихну в тот код который 100 процентов у меня отработал. Она же работать не сможет да?
    И Может всё же тот код проще подправить что бы определённые форматы грузил и размер не выше 5 мб и не хранил на сервере. Или не будет проще, а начинать разбираться с Вашим что не отрабатывает и где?
    <?php
    
    echo '<pre>' . print_r($_POST, true) . '</pre>';
    echo '<pre>' . print_r($_FILES, true) . '</pre>';
    
    function clear_data($str)
    {
      return trim(strip_tags($str));	
    }
    
    $nameFF = clear_data($_POST['name']);
    $mailFF = clear_data($_POST['mail']);
    $addressFF = clear_data($_POST['address']);
    $messFF = clear_data($_POST['mess']);
    
    $message = "<br />  <b>Фамилия Имя Отчество:</b> $name <br />  <b>Электронная почта:</b> $mail <br />  <b>Адрес места жительства:</b> $address <br />  <b>Cообщение:</b>  $mess <br />  <b>Дополнительные документы и (или) сведения:</b>";
    $subject = "Заполнена контактная форма";
    $to = "почта";
    
    $test = new phpmail(message);
    
    $exts = ['jpg', 'gif', 'jpeg', 'png', 'doc', 'txt', 'gif', 'pdf', 'docx', 'xlsx','rar']; // добавить по вкусу
    
    $test->addAdress($to);
    foreach ($_FILES['mail_file']['tmp_name'] as $key => $file) {
      $info = pathinfo(file);
      if (filesize($file) <= 5242880 && in_array($info['extension'], $exts)) {
        $test->addFile($_FILES['mail_file']['name'][$key], file_get_contents($file));
      } else {
        // тут можно написать что файл не канает
      }
    }
    
    $test->setSubject($subject)
    $test->send();
    #$test->debug();