Cronjob stuurt 50x mail naar hetzelfde bedrijf?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Furio Scripting

Furio Scripting

01/12/2016 14:05:10
Quote Anchor link
Beste forumleden,

Kan iemand mij vertellen waarom ieder bedrijf 50x een email heeft ontvangen met de volgende code:

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
<?php

$database
= new database();
         $q = 'SELECT * FROM klanten WHERE status = 1';
         $result = $database->query($q);
          
         $mail = new PHPMailer();  
        
         while ($rows = mysqli_fetch_assoc($result))
         {


             // Verstuur emailtje naar bedrijf om weer is kijkje te nemen

                $mail->setFrom(EMAIL, 'Sarah'. NAAM);
                $mail->AddReplyTo(EMAIL, 'Sarah'. NAAM);
                $mail->AddAddress($rows['email'], $rows['voornaams'].' '.$rows['achternaam']);
                $mail->IsHTML(true);          
                $mail->Subject = 'Jouw maandelijkse statistieken '.verkrijgBedrijfsnaam($rows['id']).' op '.NAAM.'';  
                include '/home/tomenjelle/domains/100dichtbij.nl/public_html/assets/mails/bedrijven-maandelijkse-herinnering-statistieken.php';
                $message = $contentStatistieken;            
                    
                $mail->Body = $message;
                $mail->Send();
    
     }

?>


Cronjob: 00 12 1 * * /path

Ik hoor graag een reactie.
 
PHP hulp

PHP hulp

28/09/2020 02:22:29
 
TJVB tvb

TJVB tvb

01/12/2016 14:22:19
Quote Anchor link
Als je regel 7 verplaatst naar regel 13 (in de while statement) zal dit waarschijnlijk opgelost zijn. Je voeg nu steeds een nieuwe ontvanger toe aan dezelfde mail en stuurt die mail nogmaals. Door regel 7 te verplaatsen maak je elke keer een nieuwe mail aan.
 
- Ariën -
Beheerder

- Ariën -

01/12/2016 14:25:39
Quote Anchor link
Ik neem aan dat je zulke kritische scripts eerst op een eigen aantal test-mailadressen uitvoert. Nu heb je de kans dat je tijdelijk op een blacklist zou kunnen komen. ;-)

Testen blijft belangrijk!
 
Ivo P

Ivo P

02/12/2016 11:28:10
Quote Anchor link
of je gebruikt ClearAllReceipients() op regel 24

https://phpmailer.github.io/PHPMailer/classes/PHPMailer.html#method_clearAllRecipients

regels 14, 15 en 17 kunnen trouwens ook naar boven voor de start van de while lus.

Keer op keer hetzelfde FROMadres instellen, voegt niets toe.


Probeer het zo goedkoop mogelijk te houden: binnen de lus steeds opnieuw phpmailer instantiëren kost natuurlijk ook recources, net als het steeds opnieuw instellen van hetzelfde from-adres etc.

Ik zou in de lus alleen doen wat veranderlijk is.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/12/2016 15:59:53
Quote Anchor link
Het verschil tussen addSomething() en setSomething() ...
 
Furio Scripting

Furio Scripting

05/12/2016 14:16:49
Quote Anchor link
Dit zou het dus moeten oplossen?

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
<?php

$database
= new database();
         $q = 'SELECT * FROM klanten WHERE status = 1';
         $result = $database->query($q);
          
        
        
         while ($rows = mysqli_fetch_assoc($result))
         {


             // Verstuur emailtje naar bedrijf om weer is kijkje te nemen

               $mail = new PHPMailer();                  
               $mail->setFrom(EMAIL, 'Sarah'. NAAM);
                $mail->AddReplyTo(EMAIL, 'Sarah'. NAAM);
                $mail->AddAddress($rows['email'], $rows['voornaams'].' '.$rows['achternaam']);
                $mail->IsHTML(true);          
                $mail->Subject = 'Jouw maandelijkse statistieken '.verkrijgBedrijfsnaam($rows['id']).' op '.NAAM.'';  
                include '/home/tomenjelle/domains/100dichtbij.nl/public_html/assets/mails/bedrijven-maandelijkse-herinnering-statistieken.php';
                $message = $contentStatistieken;            
                    
                $mail->Body = $message;
                $mail->Send();
    
     }

?>
 
Ivo P

Ivo P

05/12/2016 14:23:37
Quote Anchor link
of

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
<?php

$database
= new database();
         $q = 'SELECT * FROM klanten WHERE status = 1';
         $result = $database->query($q);
          $mail = new PHPMailer();                  
          $mail->setFrom(EMAIL, 'Sarah'. NAAM);
          $mail->AddReplyTo(EMAIL, 'Sarah'. NAAM);
          $mail->IsHTML(true);          
          
        
        
         while ($rows = mysqli_fetch_assoc($result))
         {


             // Verstuur emailtje naar bedrijf om weer is kijkje te nemen

                $mail->AddAddress($rows['email'], $rows['voornaams'].' '.$rows['achternaam']);
                $mail->Subject = 'Jouw maandelijkse statistieken '.verkrijgBedrijfsnaam($rows['id']).' op '.NAAM.'';  
                include '/home/tomenjelle/domains/100dichtbij.nl/public_html/assets/mails/bedrijven-maandelijkse-herinnering-statistieken.php';
                $message = $contentStatistieken;            
                    
                $mail->Body = $message;
                $mail->Send();
                $mail->ClearAllReceipients();
    
     }

?>


Toevoeging op 05/12/2016 14:25:54:

en dan evt. nog uit te breiden met een check of Send() wel true terug gaf.

En ik zou ook proberen bij te houden of je de mail al verstuurd hebt deze maand.

Zou je script per vergissing 5 keer draaien, dan zal nu namelijk iedereen gewoon 5x zijn mail krijgen.
Vink je af dat de mail van december al geweest is, dan zou hij de 2e / 5e keer gewoon niets doen.
 



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.