Мне удавалось прикрепить к письму только один PDF-файл за раз. Может ли кто-нибудь помочь мне понять, как добавить несколько вложений в электронную почту с помощью PHPMailer? Сначала я попытался просто использовать несколько операторов добавления вложений, следующих друг за другом.
$file1Name = $_FILES['myfile1']['name'];
$file1Path = $_FILES['myfile1']['tmp_name'];
$file2Name = $_FILES['myfile2']['name'];
$file2Path = $_FILES['myfile2']['tmp_name'];
$file3Name = $_FILES['myfile3']['name'];
$file3Path = $_FILES['myfile3']['tmp_name'];
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = '587';
$mail->SMTPAuth = true;
$mail->Username = 'email@gmail.com';
$mail->Password = 'password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
// . . .
$mail->Body = $mail_body;
$mail->addAttachment($file1Path, $file1Name);
$mail->addAttachment($file2Path, $file2Name);
$mail->addAttachment($file3Path, $file3Name);
$mail->Send();
Это не сработало. Посмотрев в Интернете, я обнаружил, что обычно вы можете добавлять несколько вложений к электронному письму только в том случае, если вложения получены из формы ввода, которая позволяет выполнять несколько отправок одновременно https://phppot.com/php/send-email-with-multiple-attachments-using-php/. Файлы хранятся вместе в виде массива и прикрепляются циклически по массиву. Для меня важно не извлекать несколько файлов из одного ввода формы, поэтому мне не нравится этот вариант. Я подумал, что может помочь, если я сам сохраню информацию о файле в массивах, но это тоже не сработало.
$fileNameArray = array($file1Name, $file2Name, $file3Name);
$filePathArray = array($file1Path, $file2Path, file3Path);
// . . .
for($i = 0; $i < 3; $i++) {
$mail->addAttachment($fileDataArray[$i], $fileNameArray[$i]);
}
$mail->Send();
Затем я попробовал решение, в котором я пытался отправить несколько писем, каждое в ответ на предыдущий, содержащий одно вложение. Это тоже не сработало. После первого письма никаких других вложений не было.
$fileNameArray = array($file1Name, $file2Name, $file3Name);
$filePathArray = array($file1Path, $file2Path, file3Path);
for($i = 0; $i < 3; $i++) {
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = '587';
$mail->SMTPAuth = true;
$mail->Username = 'email@gmail.com';
$mail->Password = 'password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
// . . .
$mail->Body = $mail_body;
$mail->addAttachment($filePathArray[$i], $fileNameArray[$i]);
Я также просмотрел некоторые исправления, связанные с редактированием кода PHPMailer. Оба исправления связаны с идентификатором содержимого. Я либо не мог найти код, на который ссылались исправления, либо казалось, что за время, прошедшее с момента публикации исправления, PHPMailer был обновлен и исправление было реализовано.
https://sourceforge.net/p/phpmailer/discussion/130418/thread/42bf5695/ https://developer-paradize.blogspot.com/2015/02/how-to-fix-multiple-attachments-problem.html
Я немного не понимаю, что делать в этот момент. Если кто-нибудь знает, как добавить несколько вложений в электронное письмо с помощью PHPMailer, не могли бы вы мне помочь? Ваша помощь очень ценится. Спасибо.