Я использую PHPMailer для отправки двух разных писем двум разным получателям. Я хочу прикрепить несколько файлов, которые пользователь загрузил к обоим электронным письмам.
Теперь вложение нескольких файлов отлично работает для первой почты, но не для второй.
С моим текущим кодом файлы прикрепляются только к первому письму, но ни ко второму не прикрепляются:
// First e-mail to recipient 1
$mail = new PHPMailer;
$mail->setFrom('example@example.com');
$mail->addAddress('recipient1@example.com');
$mail->Subject = 'Subject';
$mail->isHTML(true);
$mail->Body = '...';
// Attach multiple files one by one
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
$uploadfile = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['userfile']['name'][$ct]));
$filename = $_FILES['userfile']['name'][$ct];
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, $filename);
} else {
$msg .= 'Failed to move file to ' . $uploadfile;
}
}
$mail->send(); // I only wrote this once because as it turns out, it sends both of the mails
// Second e-mail to recipient 2
$mail = new PHPMailer;
$mail->setFrom('example@example.com');
$mail->addAddress('recipient2@example.com');
$mail->Subject = 'Subject';
$mail->isHTML(true);
$mail->Body = '...';
// Attach multiple files one by one
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
$uploadfile = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['userfile']['name'][$ct]));
$filename = $_FILES['userfile']['name'][$ct];
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, $filename);
} else {
$msg .= 'Failed to move file to ' . $uploadfile;
}
}
Затем я попытался не копировать всю функцию в обе письма, а только добавил
$mail->addAttachment($uploadfile, $filename);
на второе письмо. Это, однако, добавляет только первый указанный файл, а дублирование этой строки приводит к тому, что один и тот же файл отправляется дважды.
Есть идеи, как прикрепить несколько файлов (3 в моем случае) к двум разным электронным письмам?