Как отправить несколько файлов с помощью PHP, помимо одного файла?

Как можно модифицировать код на PHP с использованием библиотеки PhpMailer, чтобы реализовать отправку нескольких файлов, а не только последнего выбранного? В настоящее время скрипт отправляет только один последний файл из загруженных.
  • 15 апреля 2024 г. 5:29
Ответы на вопрос 2
Для отправки нескольких файлов с помощью PHP можно использовать класс PHPMailer и его метод addAttachment(). 

Пример кода для отправки нескольких файлов с использованием PhpMailer:

```php
<?php
require 'vendor/autoload.php'; // подключаем файл автозагрузки библиотеки PhpMailer

// Создаем экземпляр класса PHPMailer
$mail = new PHPMailer();

// Устанавливаем настройки для отправки почты
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'yourpassword';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';

// Устанавливаем адрес отправителя и получателя
$mail -> setFrom('[email protected]', 'Your Name');
$mail -> addAddress('[email protected]', 'Recipient Name');

// Добавляем файлы для отправки
$mail->addAttachment('path/to/file1.pdf');
$mail->addAttachment('path/to/file2.jpg');
$mail->addAttachment('path/to/file3.docx');

// Устанавливаем тему письма и текст
$mail->Subject = 'Subject';
$mail->Body = 'Message body';

// Отправляем письмо
if(!$mail->send()) {
    echo 'Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message sent!';
}
?>
```

Этот код добавляет несколько файлов для отправки с помощью метода addAttachment() и отправляет их все вместе.

Если в вашем текущем скрипте используется только один файл для отправки, вам нужно будет изменить соответствующую часть своего кода на что-то подобное:

```php
// Добавляем файл для отправки
$mail->addAttachment('path/to/file1.pdf');
```

Замените эту часть кода на следующий блок, чтобы отправлять несколько файлов:

```php
// Добавляем файлы для отправки
$mail->addAttachment('path/to/file1.pdf');
$mail->addAttachment('path/to/file2.jpg');
$mail->addAttachment('path/to/file3.docx');
```

Это позволит вашему скрипту отправлять несколько файлов с помощью PhpMailer.
Форма должна накидывать файлы в name="uploaded_file[]". 
А сервер должен итерировать так:
if (isset($_FILES["uploaded_file"]) && !empty($_FILES["uploaded_file"]["name"]) && is_array($_FILES["uploaded_file"]["name"]) && count($_FILES["uploaded_file"]["name"]) > 0)
{
  for($i = 0; $i < count($_FILES["uploaded_file"]["name"]); $i++)
  {
    $file_name = $_FILES['uploaded_file']['name'][$i];
    $file_size = $_FILES['uploaded_file']['size'][$i];
    $file_tmp = $_FILES['uploaded_file']['tmp_name'][$i];
    $file_type = $_FILES['uploaded_file']['type'][$i];
    $file_ext = strtolower(end(explode('.', $_FILES['uploaded_file']['name'][$i])));
    ...
  }
}
Похожие вопросы