Avatar billede webudvikleren Nybegynder
22. november 2006 - 20:16 Der 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.

Har I nogle idéer?

På forhånd tak,
Webudvikleren.
Avatar billede tigertool Nybegynder
22. november 2006 - 20:23 #1
Var det ikke en ide at smide alle email-adresserne i Bcc og så sende mailen til dig selv?
Avatar billede barklund Nybegynder
22. november 2006 - 20:25 #2
Hvor er du hostet? B-one har for eksempel en begrænsning, så du kun kan sende én email per ti minutter.
Avatar billede michaeltryl Seniormester
22. november 2006 - 20:25 #3
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";
}}
Avatar billede webudvikleren Nybegynder
22. november 2006 - 20:28 #4
Gør det på min egne maskine. Gør det lokalt ( localhost ) og bruger gratisdns.dk
Avatar billede webudvikleren Nybegynder
22. november 2006 - 20:29 #5
God idé michaeltryl - jeg prøver lige senere og vender tilbage
Avatar billede mccookie Seniormester
22. november 2006 - 20:53 #6
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.......
Avatar billede webudvikleren Nybegynder
22. november 2006 - 20:58 #7
Smid svar michael - det virker jo fantastisk!
Avatar billede mccookie Seniormester
22. november 2006 - 21:00 #8
<?php

$dato  = date('d-m-Y');
$time  = date('H:i:s');
$antal_mail = "100";
$i = "1";

$from    = "NAVN EFTERNAVN <mail@DOMÆNE.dk>";
$to      = "NAVN@DOMÆNE.dk";
$sujet  = "Værst i test ;)";

while($i <= $antal_mail) {

$content = "Dette er en testmail\n\nDato: $dato\nKl. $time\n\nDette er testmail nr.: $i ud af $antal_mail\n\n\nTest af Cronjob";
mail($to, $sujet, $content,
      "From: $from\r\n"
      ."Reply-To: $from\r\n"
      ."X-Mailer: PHP/" . phpversion()); 
      echo $i . "<br />";
      $i++;
      flush(); }


Mail no. 1:

Dette er en testmail

Dato: 22-11-2006
Kl. 20:55:06

Dette er testmail nr.: 1 ud af 100




Mail. no. 100


Dette er en testmail

Dato: 22-11-2006
Kl. 20:55:06

Dette er testmail nr.: 100 ud af 100
Avatar billede michaeltryl Seniormester
22. november 2006 - 21:04 #9
svar
Avatar billede webudvikleren Nybegynder
22. november 2006 - 21:08 #10
Michael - det var en kommentar.
Mccookie - jeg brugte michaels svar, sorry.
Avatar billede mccookie Seniormester
22. november 2006 - 21:10 #11
Hej igen

Jeg har teste mit script og det har nacket 350 emails afsted og de kom allesammen lige lukt ned i fars emailboks ;) og det er med One.com servere....

Mvh.
Henning
Avatar billede michaeltryl Seniormester
22. november 2006 - 21:11 #12
anden gang er lykkens gang her er et svar
Avatar billede mccookie Seniormester
22. november 2006 - 21:12 #13
Webudvikleren>>>

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 :)

Mvh.
McCookie
Avatar billede yHec Novice
22. november 2006 - 21:48 #14
Hmmmm. Barklund! Jeg er hosted hos B-one - og jeg har da ingen problemer med at sende nyhedsbreve mm indenfor MEGET mindre end 10 minutter!

/y
Avatar billede michaeltryl Seniormester
22. november 2006 - 22:04 #15
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
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

IT-JOB