PHP-скрипт для отправки данных на почту с загрузкой файлов

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

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

Рассмотрим пример PHP-скрипта:

<?php

if(isset($_POST['submit'])) {

  // Получаем данные из формы
  $name = $_POST['name'];
  $email = $_POST['email'];
  $message = $_POST['message'];

  // Создаем письмо
  $to = 'youremail@example.com';
  $subject = 'Новое сообщение с сайта';
  $headers = 'From: '.$name.' <'.$email.'>' . "\r\n" .
             'Reply-To: '.$email . "\r\n" .
             'Content-type: text/html; charset=utf-8' . "\r\n";

  // Добавляем вложенный файл, если он был загружен
  if(isset($_FILES['attachment']) && $_FILES['attachment']['error'] == UPLOAD_ERR_OK) {
    $file_name = $_FILES['attachment']['name'];
    $file_tmp = $_FILES['attachment']['tmp_name'];
    $file_size = $_FILES['attachment']['size'];
    $file_type = $_FILES['attachment']['type'];
    $file_content = file_get_contents($file_tmp);
    $file_encoded = base64_encode($file_content);
    $attachment = chunk_split($file_encoded);
    $headers .= 'Content-Type: '.$file_type.'; name="'.$file_name.'"' . "\r\n" .
                'Content-Transfer-Encoding: base64' . "\r\n" .
                'Content-Disposition: attachment; filename="'.$file_name.'"' . "\r\n\r\n";
    $message .= '<br><br>Вложение: <a href="data:'.$file_type.';base64,'.$file_encoded.'" download="'.$file_name.'">'.$file_name.'</a>';
  }

  // Отправляем письмо
  $sent = mail($to, $subject, $message, $headers);

  // Выводим сообщение об успешной отправке или ошибке
  if($sent) {
    echo '<p>Сообщение отправлено!</p>';
  } else {
    echo '<p>Ошибка при отправке сообщения.</p>';
  }
}

?>

Обратите внимание на то, что в данном примере используется функция mail() для отправки письма. Однако, для более надежной и безопасной отправки писем, рекомендуется использовать сторонние библиотеки, такие как PHPMailer или SwiftMailer.

И далее для примера рассмотрим HTML-код формы:

<form method="post" enctype="multipart/form-data">
  <label for="name">Имя:</label>
  <input type="text" name="name" required>

  <label for="email">Email:</label>
  <input type="email" name="email" required>

  <label for="message">Сообщение:</label>
  <textarea name="message" required></textarea>

  <label for="attachment">Вложение:</label>
  <input type="file" name="attachment">

  <input type="submit" name="submit" value="Отправить">
</form>
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии