Wysyłanie wielu e-maili z PHPmailerem

Edytuj: Zapomniałem, że stworzyłemSendMail(); funkcjonuję sam, dlatego wyjaśnienie nie wspomina na początku o tym, co robi.

Mam problemy z PHPMailerem (https://github.com/PHPMailer/PHPMailer) podczas próby wysłania dwóch e-maili, jedna bezpośrednio po drugiej.

Skrypt jest prawie całkowicie „wyjęty z pudełka”, z kilkoma modyfikacjami, takimi jak aforeach pętla pozwalająca na wiele adresów i wszystko nadal działa idealnie.

Jeśli jednak spróbuję wywołać więcej niż jedną instancjęSendMail(); Otrzymuję komunikat o błędzie:

Fatal error: Cannot override final method Exception::__clone() in .... online 0

Wcześniej korzystałem z wbudowanegomail(); funkcja, która pozwoliła mi używać go tyle razy, ile chciałem, w krótkich odstępach czasu, ale nie wydaje się to takie proste w PHPmailer:

$to = [email protected];
$to2 = [email protected]';
$headers = 'php headers etc';
$subject = 'generic subject';
$message = 'generic message';
mail($to, $subject, $message, $headers);
mail($to2, $subject, $message, $headers);

Powyższe spowodowałoby wysłanie dwóch identycznych wiadomości e-mail do różnych osób, jednak nie mogę łatwo zreplikować tej funkcji w PHPmailer.

Czy istnieje sposób na składanie tych żądań, aby móc wysyłać kolejne wiadomości e-mail bez awarii? Zmuszanie skryptu do czekania na wysłanie pierwszego e-maila również byłoby dopuszczalne, choć nie preferencyjne.

Jak wspomniałem, wiem, że działa, gdy wywoływana jest tylko jedna instancja, ale wydaje mi się, że nie mogę ponownie użyć tej funkcji.

Nie umieściłem kodu źródłowego, chociaż jest on dostępny na powyższym linku.

Z góry dziękuję

Edytuj zgodnie z żądaniem

// First Email
$to = array(
'[email protected]',
 '[email protected]',);
$subject = "Subject";
$message = $message_start.$message_ONE.$message_end;

sendMail();

// Second Email
$to = array(
'[email protected]',
 '[email protected]',);
$subject = "Subject";
$message = $message_start.$message_TWO.$message_end;

sendMail();

Powyższe jest to, jak chcę, aby to działało, tak jak będzie działaćmail();. Pierwszy e-mail będzie działał, drugi nie.

Kod SendMail ()

To pochodzi ze strony PHPmailer i jest zdefiniowane jakoSendMail();. Jedyną różnicą w porównaniu z przykładem jest pętla dlaAddAddressi włączenie$to jako zmienna globalna.

$mail = new PHPMailer();

$mail->IsSMTP();                                      // set mailer to use SMTP
$mail->Host = "smtp1.example.com;smtp2.example.com";  // specify main and backup server
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "jswan";  // SMTP username
$mail->Password = "secret"; // SMTP password

$mail->From = "[email protected]";
$mail->FromName = "Mailer";
foreach($to as $to_add){
$mail->AddAddress($to_add);                  // name is optional
}
$mail->AddReplyTo("[email protected]", "Information");

$mail->WordWrap = 50;                                 // set word wrap to 50 characters
$mail->AddAttachment("/var/tmp/file.tar.gz");         // add attachments
$mail->AddAttachment("/tmp/image.jpg", "new.jpg");    // optional name
$mail->IsHTML(true);                                  // set email format to HTML

$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";

questionAnswers(1)

yourAnswerToTheQuestion