Waarom gaat emailen naar dezelfde ipv verschillende personen PHPMailer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Eric T

Eric T

25/08/2015 23:56:29
Quote Anchor link
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


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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

?>
  
 
PHP hulp

PHP hulp

29/03/2024 12:38:51
 
- Ariën  -
Beheerder

- Ariën -

26/08/2015 00:10:07
Quote Anchor link
Waarom gebruik je niet:

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 -
 
Eric T

Eric T

26/08/2015 00:18:30
Quote Anchor link
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...?
 
- SanThe -

- SanThe -

26/08/2015 00:20:48
Quote Anchor link
Zet ook je error_reporting(E_ALL) eens aan.
Dit moet een melding geven zo te zien: $body .= "";
 
Eric T

Eric T

26/08/2015 11:01:47
Quote Anchor link
Scherp San...
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.
 
Pieter R

Pieter R

26/08/2015 13:48:15
Quote Anchor link
Heb eigenlijk niet veel ervaring met PHPmailer..
Maar word $aanhef en $content wel in de mail gezet?
 
Thomas van den Heuvel

Thomas van den Heuvel

26/08/2015 19:46:13
Quote Anchor link
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)


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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$henk
= 'hoi';
$piet = $henk;
// ...
$mail->whatever = $piet;
?>
dus een variant waarbij je tal van variabelen introduceert die eigenlijk niet nodig zijn dan wordt het nogal snel onoverzichtelijk...
 
Eric T

Eric T

26/08/2015 22:45:11
Quote Anchor link
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?

Inmiddels ook toegevoegd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$mail->ClearAddresses();
$mail->ClearAttachments();
$mail->clearCustomHeaders();

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
 
Obelix Idefix

Obelix Idefix

27/08/2015 09:56:30
Quote Anchor link
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?
 
Pieter R

Pieter R

27/08/2015 10:45:53
Quote Anchor link
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.
 
Eric T

Eric T

27/08/2015 16:41:47
Quote Anchor link
Noaoaoaoaoa.... Pieter, waar kunnen de bloemen heen?

Wat stom dat ik dat niet zag zeg! Nu werkt het inderdaad.

Super! Dankjewel :-)
 
Pieter R

Pieter R

27/08/2015 17:20:12
Quote Anchor link
Graag gedaan!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/08/2015 17:56:49
Quote Anchor link
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.


Goed gezien Pieter.
Gewijzigd op 27/08/2015 18:33:12 door Frank Nietbelangrijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.