Waarom gaat emailen naar dezelfde ipv verschillende personen PHPMailer
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?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
?>
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
?>
while($data=mysql_fetch_assoc($query_sendto)){
En dan gebruik je: $data['inschrijfnr'] etc....
Houd ook in je achterhoofd dat de MySQL-functie verouderd zijn, en dat MySQLi of PDO wordt geadviseerd.
Gewijzigd op 26/08/2015 00:10:40 door - Ariën -
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...?
Dit moet een melding geven zo te zien: $body .= "";
Gek genoeg gaf ie geen melding daarover (error reporting stond reeds aan)...
Maar 't is niet goed natuurlijk :-)
Kzal het straks even uit proberen... dankje.
Maar word $aanhef en $content wel in de mail gezet?
Eric T op 26/08/2015 00:18:30:
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)
(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:
Dat is wss het probleem.Maar word $aanhef en $content wel in de mail gezet?
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:
dus een variant waarbij je tal van variabelen introduceert die eigenlijk niet nodig zijn dan wordt het nogal snel onoverzichtelijk...
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?
Inmiddels ook toegevoegd:
aan het einde, maar ook dat geeft geen resultaat.
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 :-)
Afijn, ik blijf speuren...
gr en dank voor alle suggesties zover,
Eric
Thomas van den Heuvel op 26/08/2015 19:46:13:
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?
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.
Wat stom dat ik dat niet zag zeg! Nu werkt het inderdaad.
Super! Dankjewel :-)
Graag gedaan!
Pieter R op 27/08/2015 10:45:53:
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.
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.
Goed gezien Pieter.
Gewijzigd op 27/08/2015 18:33:12 door Frank Nietbelangrijk