Problem mit php-mailer
eddi
- php
0 misterunknown0 eddi1 dedlfix0 eddi
0 misterunknown
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ß
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
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ß
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.
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
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