eddi: Problem mit php-mailer

Hallo,

in einer Schleife versende ich Mails mit php-mail.
Der Body wird für jeden Empfänger individuell zusammengestellt.
Leider bekommen alle den Body des ersten Empfängers.

Hier der Codeschnippel:

		foreach($_POST['aktion'] as $key => $wert){  
  
			$SQL = "SELECT * FROM lieferschein WHERE ls_num = '$wert'";  
			$res = mysql_query($SQL,$ConnectHnd);  
			$ls  = mysql_fetch_array($res, MYSQL_ASSOC);  
  
			$bestDatum 	= $ls[auf_datum];  
			$bestNummer = $ls[a_num] . "/" . $ls[org_num];  
			$dpdTrack	= $ls[tracking_nr];  
			$sglTermin	= $ls[termin];  
			$sglVersand	= $ls[geliefert_sgl];  
			$kdTel		= $ls[kd_tel];  
			$kdMail		= $ls[kd_mail];  
			$kdName		= $ls[kd_name];  
  
			if($ls[anSgl] == "j"){  
				$sgl = 1;  
			}  
  
			$aktion = "a";  
//in statusmail.php baut die texte zusammen und liefert Sie in $body.  
  
			include("statusmail.php");  
  
			$mail->From       = "auftrag@ich.de";  
			$mail->FromName   = "eddi";  
  
//Testen ob das auch wirklich klappt  
//echo $body . "<br>----------------------------<br>"  
  
			$mail->AddReplyTo("auftrag@ich.de","von uns :)");  
  
			$mail->Subject    = $subj;;  
  
			$mail->MsgHTML($body);  
  
			$mail->AddAddress($kdMail, $kdName);  
			$mail->AddBCC("info@ich.de","Admin");  
  
			if($kdMail != ""){  
				if(!$mail->Send()) {  
				  $mailError = "Mailer Error: " . $mail->ErrorInfo;  
				} else {  
				  $mailOk = "ok";  
				  $SQL = "UPDATE lieferschein SET mail_wir ='j' WHERE ls_num = '$wert'";  
				  $res = mysql_query($SQL,$ConnectHnd);  
				}  
			}  
  
			$mail->ClearAddresses();  
}  

Sieht fast so aus, als wenn der Mailer alle nachfolgenden body's ignoriert.
Hab allerdings auch nichts gefunden um den body nach jedem Mail zurückzusetzen.

Bin etwas ratlos.

gruß

  1. Moin,

    foreach($_POST['aktion'] as $key => $wert){

    Ich weiß zwar nicht, was in dem $_POST-Array steht, aber da du $key nicht weiter verwendest, vermute ich, dass $_POST['action'] kein weiteres assoziatives Array beinhaltet. Hast du mal $key und $wert in jedem Schleifendurchlauf ausgegeben?

    Sollte das Array $_POST['aktion'] nur Werte enthalten, dann könntest du folgendes probieren:

    foreach($_POST['aktion'] as $wert) { dosomething }

    Ansonsten würde uns sicherlich die Ausgabe von print_r($_POST['aktion']); weiterhelfen.

    Grüße Marco

    1. Ansonsten würde uns sicherlich die Ausgabe von print_r($_POST['aktion']); weiterhelfen.

      Grüße Marco

      Hallo,

      mit dem for each hat das nix zu tun, das könnte jede andere Art von Schleife sein.
      Der Durchlauf klappt, das hab ich mit dem  echo $body... getestet. die Texte werden sauber generiert.

      Fakt ist der, der Mailer schnappt sich beim 1. Durchlauf den $body und kümmert sich einen Dreck um die veränderten Bodys, der weiteren Durchläufe.

      Vermutlich müsste man den Mailer irgendwie resetten.
      Die Frage ist nur WIE?

      Gruß

      1. Tach!

        Vermutlich müsste man den Mailer irgendwie resetten.
        Die Frage ist nur WIE?

        Erstell die Instanz in der foreach-Schleife, also jedes Mal neu.

        P.S. In deinemn Code zeigst du zwei SQL-Injection-Lücken. Bitte beachte den Kontextwechsel, wenn dir deine Daten und dein Server lieb sind.

        dedlfix.

        1. Erstell die Instanz in der foreach-Schleife, also jedes Mal neu.

          klappt :) Danke. Hätt ich auch selber drauf kommen können (grummel)

          P.S. In deinemn Code zeigst du zwei SQL-Injection-Lücken. Bitte beachte den Kontextwechsel, wenn dir deine Daten und dein Server lieb sind.

          ÖÖÖHm- muß ich mir mal reintun

      2. Moin,

        Vermutlich müsste man den Mailer irgendwie resetten.
        Die Frage ist nur WIE?

        Tja, da müsste man den Code kennen. Gibts keine Dokumentation dazu?

        Grüße Marco