Avatar billede Slettet bruger
01. oktober 2010 - 02:10 Der er 5 kommentarer

Udsende mange mails gennem PHP

Hej eksperter.

Jeg har lavet et system til Danske Spil; et anti-matchfixing-værktøj.
Administrator skal kunne udsende mails... men der kommer kun mails, når jeg tester op imod nogle få e-mail adresser.
Lige så snart jeg forsøger at sende til hele listen (156 stk), kommer der ingen mails, bortset fra til e-mail adressen i "To". Resten, der er angivet i BCC kommer ikke med.

Jeg kan lige bemærke, systemet tidligere har kørt med en for-løkke, der kørte 156 send-kommandoer. Den virkede, men ikke optimalt pga. noget timeout o.l.


Her er den vigtigste kode:
                        $emne = "ELMS: ".utf8_encode(mysql_real_escape_string($_POST['hometeam']))." vs. ".utf8_encode(mysql_real_escape_string($_POST['awayteam']));
                       
                        $besked = "Dear ELMS member.\r\n\r\nA notification has been created on the match ".utf8_encode(mysql_real_escape_string($_POST['hometeam']))." vs. ".utf8_encode(mysql_real_escape_string($_POST['awayteam']))."\r\nPlease enter www.elms.ch to view the notification.";
                        $besked .= "\r\n\r\nBest regards\r\nThe European Lotteries Monitoring Team\r\n";
                       
                        // To send HTML mail, the Content-type header must be set
                        $headers = "MIME-Version: 1.0\r\n";
                        $headers .= "Content-Type: text/plain; charset=us-ascii\r\n";
                        $headers .= "Content-Transfer-Encoding: 7bit\r\n";
                       
                        // Additional headers
                        $fra .= "From: mail@elms.ch\r\n";
                        $til .= "BCC: ";
                        $listUsersQuery = mysql_query("SELECT username, email, name FROM elms_users");
                        $listUsersNum = mysql_num_rows($listUsersQuery);
                        $brugerliste = array();
                       
                        // Vi skal sende alle mails på én gang. Derfor skal vi akkumulere alle modtagere, så serveren ikke hænger i håndbremsen.
                        for ($i=0; $i<$listUsersNum; $i++) {
                            $userrow = mysql_fetch_array($listUsersQuery);
                            //echo "<font color='#ffffff'>Send mail to ".$userrow['email']."</font><br>";
                            array_push($brugerliste, $userrow['email']);
                            $collapsedListe = implode(",", $brugerliste);
                        }
                        $til .= $collapsedListe."\r\n";
                        //echo nl2br($headers.$fra.$til);
                        mail("minemail@post.dk", $emne, $besked, $headers.$from.$to);
                        //mail("minemail@post.dk", $emne, $besked, "From:mail@elms.ch\r\nBcc: {$collapsedListe}");
                    }
Avatar billede leif Seniormester
01. oktober 2010 - 07:59 #1
Et forslag er at bruge en mail class som phpmailer eller swiftmailer, der kan du vælge at sende enten via smtp eller mail() og når der skal sendes mange mails anbefaler jeg personligt at man bruger smtp
Avatar billede coderdk Praktikant
01. oktober 2010 - 12:53 #2
Jeg ville bruge swiftmailer som leif nævner. Den har en god batchSend-funktion :)
Avatar billede Slettet bruger
02. oktober 2010 - 19:45 #3
Hej igen.

Jeg har nu implementeret swiftmailer - det ser umiddelbart ud til at spille, men desværre kan jeg ikke teste det i et live-system, før kunden skal sende mails ud igen (næste uge)... skal nok vende tilbage snarest.
Tak for assistancen.
Avatar billede Slettet bruger
05. juni 2013 - 18:03 #4
Leif, denne fik jeg aldrig lukket - det kom til at spille efter hensigten jf. din opskrift. Hvis du lige poster et tomt svar, får du point.
Avatar billede leif Seniormester
07. juni 2013 - 07:15 #5
Lyder kanon
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester