Прикрепляю в письме, допустим 3 разных файла...., а приходят 2 одинаковых! Видимо 3-й файл "затирает" первые 2. Но почему тогда он приходит только в 2-х копиях, а не трёх?
Как советуют многие, если написать стандартно, если используешь PHPMailer - не спасает!
$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
Или что-то типа:
$mail->addAttachment($_FILES['attachfile'][0]['tmp_name'], $_FILES['attachfile']['name']);
$mail->addAttachment($_FILES['attachfile'][1]['tmp_name'], $_FILES['attachfile']['name']);
- абсолютно не помогает! Это тоже совсем не то, т.к. приходит только тело (текст), письма, без прикреплённых файлов! Приходит только сообщение в письме, без каких-либо прикреплённых файлов. Помогите пожалуйста разобраться! Как прикреплять несколько файлов с разным (со всеми) расширениями, например: JPG, JPEG, PNG, GIF, txt, WEBP, docx, BMP, video...
Вот нужные строки из HTML-формы:
<form action="mysite.com/submit.php" method="POST" id="modalForm" name="feedback_form" class="contact_form" enctype="multipart/form-data">
<input type="email" name="user_email" placeholder="raid-gir@example.com" required id="email" />
<input type="file" id="file" name="attachfile[]" value="1" class="upload_files" multiple="multiple" />
<button type="submit" id="btnSend" name="sendMail" class="submit">Submit Form</button>
</form>
Обработчик HTML-формы, submit.php
use PHPMailer\PHPMailer\PHPMailer; // создайте класс PHPMailer
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "/home/homexnmx/public_html/vendor/autoload.php";
$email = $_POST['user_email'] = htmlspecialchars(stripslashes($_POST['user_email']));
$mail = new PHPMailer; // по умолчанию используется php "mail()"
$mail->CharSet = 'UTF-8';
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = "smtp.yandex.ru";
$mail->SMTPAuth = true;
$mail->Username = "отпарвитель@yandex.ru"; // Имя пользователя и пароль
$mail->Password = "*****";
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->From = "отправитель@yandex.ru";
$mail->FromName = "имя отправителя";
$mail->addAddress('получатель@mysite.com', 'Homexnmx'); // Имя получателя
$mail->isHTML(true);
$mail->Subject = 'Из модальной формы - adaptive.php';
$message = "<b>Email:</b> $email<br>";
$mail->Body = $message;
// Прикрепляются 2 одинаковых файла! Т.е. видимо 2-й затирает 1-й.
if (!empty($_FILES['attachfile']['name'][0]))
{
$target_file = count($_FILES['attachfile']['name']); // $tempFiles
for ($i = 0; $i < $target_file; $i++) { // получаем количество файлов с массива // $tempFiles
if ($_FILES['attachfile']['error'][$i] == 0) { // нет ошибки при передаче файла - продолжаем!
if (!$mail->AddAttachment($_FILES['attachfile']['tmp_name'][$i], $_FILES['attachfile']['name'][$i], 'base64', $_FILES['attachfile']['type'][$i])) die($mail->ErrorInfo);
} $filename = "./uploads/". $_FILES['attachfile']["name"];
$mail->addAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
// $mail->addAttachment($_FILES['attachfile'][0]['tmp_name'], $_FILES['attachfile']['name']);
// $mail->addAttachment($_FILES['attachfile'][1]['tmp_name'], $_FILES['attachfile']['name']);
// $mail->addAttachment($_FILES['attachfile'][0]['tmp_name'], $_FILES['attachfile'][0]['name']);
// $mail->addAttachment($_FILES['attachfile'][1]['tmp_name'], $_FILES['attachfile'][1]['name']);
// $mail->addAttachment($_FILES['attachfile'][0]['tmp_name']);
// $mail->addAttachment($_FILES['attachfile'][0]['name'], 'new.jpg');
}
}
if (!$mail->send()) {
echo $resalt = 'Message could not be sent!'; // Сообщение не может быть отправлено!
}
else
{
echo $resalt = '✅ <b>Message has been sent!</b><br><br><pre><b><a href="https://mysite.com/aptive.php" style="text-decoration:none;">⬅ Back to page</a></b></pre>';
}
$mail->clearAddresses(); // очищаем список адресатов
$mail->clearAttachments(); // очищаем файлы вложений
И последнее, это Ajax - adaptive.js
$(document).ready(function() {
$('#modalForm').submit(function(e) {
e.preventDefault();
var resalt = document.querySelector('.resalt');
var data = new FormData(jQuery('form')[0]);
jQuery.each(jQuery('#file')[0].files, function(i, name) {
data.append('attachfile[]', name);
});
jQuery.ajax({
url: 'https://mysite.com/submit.php',
data: data,
cache: false,
contentType: false, // запретит jQuery устанавливать заголовок Content-Type и оставит это действие объекту XMLHttpRequest
processData: false, // предотвратит автоматическое преобразование данных FormData в строку запроса
method: 'POST',
type: 'POST', // For jQuery < 1.9
success: function(data) {
resalt = '✅<b>JS Your message sent!</b>';
$('.block-popup').hide('');
$('.note').css('display', 'block');
$('.resalt').html(data);
},
error: function(jqXHR, exception) {
resalt = 'Mailer Error';
$('.block-popup').hide('');
$('.note').css('display', 'block');
$('.resalt').html(data);
}
});
});
});