22. november 2006 - 20:16Der er
14 kommentarer og 1 løsning
Sende e-mails ud via while
Hej - jeg har et community med omtrent 350 brugere indtil videre. Når jeg vil sende et nyhedsbrev ud, så går der altid kuk i det. Enten fordi en email adresse ikke er gyldig, eller fordi selve scriptet bare går kold og ikke kommer videre.
Min tabel hedder brugere, og i den har jeg 'email'. Jeg gør så, således:
while () { mail( $row['email'] , "Emne", "Tekst"); }
Det skulle udmiddelbart være rigtigt nok? - Men desværre går det altid galt, og kun meget få når at modtage en e-mail! - og det er selvfølgelig ikke godt nok.
Jeg har også prøvet at benytte mig af flush()- og sleep() funktionen - dog uden held.
her er et forslag. lav et felt i din bruger database som du kalder "sendt" standardværdi er nej så kan du bruge denne kode. den sender mails til alle brugere hvor sendt er nej og opdatere feltet sendt i din database til ja på dem der er sendt. den udskriver også hvilke mails der er sendt korrekt og ukkorrekt. hvis der er nogen der er sendt ukkorrekt kan du bare køre scriptet igen og når alle er sendt korrekt laver du et script der opdatere feltet sendt til nej igen ved alle brugere. jeg fik det af en her på eksperten der bruger det på omkring 1500 brugere
$hent = mysql_query("SELECT email FROM bruger_tabel WHERE sendt ='nej'"); /** henter e-mails fra tabel **/ while ( $row = mysql_fetch_assoc ( $hent ) ) /** udskriver dem alle **/ { $email = $row[email];
if ( mail($email,$emne,$nytekst,$header) ) { /** indsæt til mysql, fordi nu er den true, og ER sendt **/ mysql_query("UPDATE til_nyhed SET sendt = 'ja' WHERE email='$email'") or die(mysql_error());
flush(); sleep(1); /** venter 1 sekundt, før den går videre **/ flush(); echo "$email blev sendt <strong>korrekt</strong><br />\r\n"; } else { /** indsæt til mysql, fordi nu er den false, og IKKE sendt **/ mysql_query("UPDATE til_nyhed SET sendt = 'nej' WHERE email='$email'") or die(mysql_error()); flush(); sleep(1); /** venter 1 sekundt, før den går videre **/ flush(); echo "$email blev sendt <strong>ukorrekt</strong><br />\r\n"; }}
Barklund>>> Hmmm..... jeg har et script kørende i test, den sender 5 mail til til min emailadresse. Oprindeligt lavede jeg det for at teste cronjob.de og det fungerer iøvrigt helt perfekt. Hele opsættet kører på One.com bedre kendt som b-one.dk, der var lidt bøvl i starten da One.com kræver at der er fuld afsender på mailen, hvilket er forståeligt, for at kunne sende mere end en.......
Det pågældende script har jeg haft kørende i ca. 6 måneder eller mere og det har var lige så stabilt som præstens amen i kirken om søndagen.
Pt. har jeg 2 gange indenfor få minutter sendt 50 mail afsted til min egen mailadresse.......
Det skal du ikke undskylde, det er du jo i din gode ret til ;)
Jeg hæftede mig faktisk ved Barklunds kommentar og ville lige afprøve det, michaels script har også en lækker feature - Den vil jeg da også lige afprøve :)
jeg blev lidt nysgerrig efter om b-one har en grænse eller ej og her er det svar jeg fik fra deres support
Hvis FRA adressen har samme domæne som det der sendes fra er der ingen begrænsning
Synes godt om
Ny brugerNybegynder
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.