Senden mehrere E-Mails mit PHPmailer

Edit: ich vergaß, ich hatte die SendMail(); Funktion selbst, das ist der Grund, warum die Erklärung nicht erwähnt zunächst, was es tut.

Ich habe einige Schwierigkeiten mit PHPMailer (https://github.com/PHPMailer/PHPMailer) bei dem Versuch, senden Sie zwei Mails, eine direkt nach der anderen.

Das script ist fast komplett 'out of the box', mit nur wenigen änderungen wie z.B. einer foreach Schleife zu erlauben, für mehrere Adressen ein, und alles funktioniert immer noch perfekt.

Jedoch, wenn ich versuche zu rufen, mehr als eine Instanz von SendMail(); bekomme ich die Fehlermeldung:

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

Bisher war ich mit der eingebauten mail(); Funktion, die mir erlaubt, es zu benutzen, so oft wie ich gerne in schneller Folge , aber es scheint nicht ganz so einfach mit PHPmailer:

$to = me@me.com;
$to2 = me2@me2.com';
$headers = 'php headers etc';
$subject = 'generic subject';
$message = 'generic message';
mail($to, $subject, $message, $headers);
mail($to2, $subject, $message, $headers);

Den oben genannten würde dazu führen, dass zwei identische E-Mails an verschiedene Leute, aber ich kann nicht einfach replizieren diese Funktionalität mit PHPmailer.

Gibt es eine Möglichkeit von stapeln diese Anfragen, so dass ich senden können, aufeinander folgende E-Mails, ohne dass es ausfällt? Erzwingen, dass das Skript wartet, bis die erste E-Mail wurde gesendet wäre auch akzeptabel, wenn auch nicht bevorzugte.

Als ich erwähnte, ich weiß, dass es funktioniert, wenn nur eine Instanz aufgerufen wird, aber ich bin anscheinend nicht in der Lage sein zu re-verwenden Sie die Funktion.

Ich habe nicht enthalten die source-code, obwohl es alle auf den link oben.

Vielen Dank im Voraus

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

Oben ist, wie ich funktionieren soll, wie es funktionieren würde mit mail();. Die erste E-Mail funktioniert gut, die zweite nicht.

SendMail () - code

Dies ist von der PHPmailer-website, und ist das, was definiert ist als SendMail();. Der einzige Unterschied zu dem Beispiel wird die Schleife für AddAddress, und die Einbeziehung von $to als eine 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";
Verwenden Sie die gleiche PHPMailer Objekt zum senden der zwei E-Mails? Sie haben eine völlig unterschiedliche PHPMailer Objekt für die zweite E-Mail, oder Sie könnten einfach verwenden AddAddress zu senden die gleiche E-Mail an mehrere Adressen. Wenn Sie nicht möchten, dass der Absender, einander zu sehen, verwenden Sie "BCC".
Ich weiß nicht, ob dies wird Ihnen helfen oder nicht, aber ich habe diese Lesezeichen und verwenden Sie es jedes mal, wenn ich mit PHPMailer: inmotionhosting.com/support/email/send-email-from-a-page/...
Ich wollte wieder die gleichen Objekt, ja, aber ich habe auch versucht zu erstellen SendMail2 als eine separate Funktion und führen Sie eine nach der anderen. Sie verwenden noch die gleiche Datei - class.phpmailer.php so würde ich auch verdoppeln müssen, alles zu tun, mit der Funktion?
Danke @Ryan, ich habe es die Arbeit als eine einzelne Funktion, sondern eine erneute Verwendung der Funktion ist das, was das problem verursacht.
Warum gehst du nicht veröffentlichen Ihren broken code für PHPMailer und nicht nur der code, der tatsächlich funktioniert für Sie.. ich vermute, Sie nicht mit der PHPMailer Objekt richtig. Schauen wir uns den Quellcode-Beispiel für PHPMailer alles, was Sie mögen, aber Sie sind eindeutig nicht schreiben Sie Ihren code genau wie in den Beispielen.

InformationsquelleAutor JoeP | 2014-01-03

Schreibe einen Kommentar