Ik heb onderstaande code die mail verstuurt naar diverse personen uit de database.
Als ik de emails ontvang (heb het gelimiteerd op 2), krijg ik wél de emails op de verschillende adressen binnen
behorende bij de 2 verschillende personen.
Maar de naam en het inschrijfnummer in de aanhef is twee keer gelijk...
Waarom niet in elke email de bijbehorende naam + nummer?
Iemand een idee???
Eric
<?php
include_once('../config.php');
include_once('adminvars.php');
include_once('PHPMailer/class.phpmailer.php');
require('PHPMailer/PHPMailerAutoload.php');
$seiz_arr = getAdminVars();
$seiz = substr($seiz_arr[2],2,2); echo $seiz."<br>";
$query_sendto = mysql_query("SELECT inschrijfnr,vn,an,email FROM inschrijvingen WHERE inschrijfnr LIKE '$seiz%' AND nbgemaild='' AND inschrijfnr IN (SELECT inschrijfnr FROM betalingen WHERE betaald='1') ORDER BY inschrijfnr LIMIT 2");
$found = mysql_num_rows($query_sendto);
while ( list($inschrijfnr,$vn,$an,$email) = mysql_fetch_array($query_sendto) ){
if($email!=""){
$mail = new PHPMailer(); // defaults to using php "mail()"
$body .= "";
$replytomail = "[email protected]";
$replytoname = "Pietje Puk";
$address = $email;
$bccaddress = "[email protected]";
$mail->AddReplyTo($replytomail,$replytoname);
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->SetFrom($replytomail,$replytoname);
$mail->AddAddress($address, "");
$mail->AddBCC($bccaddress, "");
//Ter test:
$aanhef = "Bericht van Pietje Puk voor ".$vn." ".$an.", inschrNr:".$inschrijfnr; $content="Hallo,<br><br>Dit is de tekst<br><br>groet Pietje Puk."; $onderwerp="Subject: bericht van Pietje Puk";
$mail->Subject = $onderwerp;
$mail->AddEmbeddedImage('images/mailtemplate-bottom-bar.png', 'lijnimg', 'images/mailtemplate-bottom-bar.png');
include_once('mail_template_bodyis.php');
$mail->Body .= $body;
echo "Mail will now be send.<br>";
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent to ".$email." !<br>";
}
mysql_query("UPDATE inschrijvingen SET nbgemaild='1' WHERE inschrijfnr='$inschrijfnr'");
}
}//end of while
?>
Aar, dat kan ik natuurlijk nog wel even proberen morgen.
Maar kan het niet te maken hebben met het scheidingstoken?
Ik kan me herinneren dat bij mail() je altijd een of ander random identifier gegenereerd moest worden, voor elke mail een verschillende anders kreeg je soortgelijke perikelen. En dat je die dan gebruikt tussen de headers tbv de scheiding van elk onderdeel...
(kom even niet bij de engelse benaming op er van)
Kzie het zo even niet staan binnen de PHPMailer class...wellicht dat dat het probleem is. maarja, waaronder valt dat in die klasse...?
Ik kan me herinneren dat bij mail() je altijd een of ander random identifier gegenereerd moest worden, voor elke mail een verschillende anders kreeg je soortgelijke perikelen. En dat je die dan gebruikt tussen de headers tbv de scheiding van elk onderdeel...
(kom even niet bij de engelse benaming op er van)
Waarschijnlijk bedoel je de boundaries van de verschillende onderdelen van je MIME mailbericht. Maar dat is hier waarschijnlijk het probleem niet. Weet ook niet of deze klasse hier gebruik van maakt.
Pieter R op 26/08/2015 13:48:15
Maar word $aanhef en $content wel in de mail gezet?
Dat is wss het probleem.
Daarnaast wat SanThe zegt: zet het melden en weergeven van fouten aan. Waarom controleer je niet voordat je mail wordt verzonden wat de waarden zijn van de verschillende onderdelen? Daar hoef je toch geen mailberichten voor uit te sturen? Dit zou ik pas doen als laatste check.
Ook als je je bedient van deze manier van programmeren:
Ok, update...
Ik heb nu het advies van Aar geimplementeerd.
Ik heb body .= er uit gehaald
$aanhef en $content worden opgesomd binnen het bestand mail_template_bodyis.php Ofwel, die worden ook mee gestuurd.
Het gekke is dat de mail wel naar beide adressen wordt gestuurd.
Ofwel, het email adres is per lus wel goed.
De aanheft met de naam en inschrijfnummer echter niet... die zijn in beide mails hetzelfde.
@Thomas, ik bedoel inderdaad boundaries.
Ik heb in het verleden veel met mail() gewerkt.
Als ik dan niet per email een verschillende boundarie gebruikte, kreeg ik exact hetzelfde probleem...
Vandaar dat ik het wel in die richting zoek.
Misschien dat het iets met headers van doen heeft?
Heb ook de sql query in phpmyadmin gerund, maar dat geeft echt twee verschillende resultaten, dus die is 100% goed.
Of zou het kunnen dat Outlook, waarmee ik de mail ophaal, dingen door elkaar gooit?
Ik kan me dat haast niet voorstellen datd at uberhaupt mogelijk is... maarja, ik sta nergens versteld meer van :-)
Daarnaast wat SanThe zegt: zet het melden en weergeven van fouten aan. Waarom controleer je niet voordat je mail wordt verzonden wat de waarden zijn van de verschillende onderdelen? Daar hoef je toch geen mailberichten voor uit te sturen? Dit zou ik pas doen als laatste check.
Al geprobeerd? M.a.w. kloppen de variabelen wel, voordat je ze verstuurd?
Gebruik je nog steeds list om door je dataset te lopen?
Volgens mij gaat het mis op include_once() op regel 37.
Deze zit in de while loop en word dus 1x uitgevoerd.
Je krijgt wel de verschillende emails, want die komt namelijk uit de list (regel 13)
Met gewoon include() zou het moeten werken.