Versenden mehrerer E-Mails mit PHPmailer

Edit: Ich habe vergessen, dass ich das erstellt habeSendMail(); funktioniere ich selbst, weshalb in der Erklärung zunächst nicht erwähnt wird, was es tut.

Ich habe Probleme mit PHPMailer (https://github.com/PHPMailer/PHPMailer) beim Versuch, zwei E-Mails direkt nacheinander zu versenden.

Das Skript ist fast vollständig "out of the box", mit nur wenigen Änderungen wie aforeach Schleife für mehrere Adressen zu ermöglichen, und alles funktioniert immer noch perfekt.

Wenn ich jedoch versuche, mehr als eine Instanz von aufzurufenSendMail(); Ich erhalte die Fehlermeldung:

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

Zuvor habe ich das eingebaute verwendetmail(); Funktion, die es mir erlaubte, es so oft zu benutzen, wie ich es in kurzer Folge wollte, aber mit PHPmailer scheint es nicht so einfach zu sein:

$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);

Das oben Genannte würde dazu führen, dass zwei identische E-Mails an verschiedene Personen gesendet werden. Ich kann diese Funktionalität jedoch nicht einfach mit PHPmailer replizieren.

Gibt es eine Möglichkeit, diese Anforderungen zu stapeln, damit ich aufeinanderfolgende E-Mails senden kann, ohne dass dies fehlschlägt? Das Skript dazu zu zwingen, zu warten, bis die erste E-Mail gesendet wurde, ist ebenfalls akzeptabel, wird jedoch nicht bevorzugt.

Wie ich bereits erwähnt habe, funktioniert es, wenn nur eine Instanz aufgerufen wird, aber ich bin anscheinend nicht in der Lage, die Funktion wiederzuverwenden.

Ich habe den Quellcode nicht eingefügt, obwohl er über den oben angegebenen Link verfügbar ist.

Danke im Voraus

Bearbeiten Sie wie gewünscht

// 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();

Das Obige ist, wie ich möchte, dass dies so funktioniert, wie es funktionieren würdemail();. Die erste E-Mail funktioniert einwandfrei, die zweite nicht.

SendMail () Code

Dies stammt von der PHPmailer-Website und wird als definiertSendMail();. Der einzige Unterschied zum Beispiel ist die Schleife fürAddAddressund die Aufnahme von$to als globale Variable.

$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";

Antworten auf die Frage(1)

Ihre Antwort auf die Frage