Avatar billede qub- Novice
08. maj 2010 - 17:13 Der er 12 kommentarer og
1 løsning

mails +200 - send kun 80 af gangen

hejsa..

Undskyld for den lidt kryptiske overskrift

Men jeg har en funktion som sender en email til alle i mit system (over 200), med et loop..

altså noget lign:

SELECT mail, navn FROM tabel
while(dit resultat){
mail(til, ...);
}


Det fungere nu os ganske udemærket - men jeg har til tider oplevet at serveren ikke kan klare, at sende så mange af gangen så kun halvdelen modtager deres emails..

Så hvordan laver jeg så system fx kun sender 80 mails af gangen, holder en pause og sender igen.. osv osv...


Eller er der bare en meget smartere måde at lave det her emailsystem på??



// Casper
Avatar billede expnet Seniormester
08. maj 2010 - 17:23 #1
du laver det bare sådan at du henter alle email frem først og sender en gang med alle emails i CC og evt sætte du din egen email i til (TO)
Avatar billede repox Seniormester
08. maj 2010 - 17:34 #2
Hvad betyder 'serveren ikke kan klare, at sende så mange'? Hvad er årsagen til at du ikke kan sende de +200 mails over en gang?

Alternativt kan du lave en tabel i din database som agerer som kø; den vil nok være relativt identisk med din eksisterende tabel.
Start med at lave et script der kopierer dine modtagere over i din kø-tabel:
<?php

  $sql = "INSERT INTO cueTable (mail, navn) SELECT mail, navn FROM orgTable";
  mysql_query($sql);

?>


Bagefter kan du, uafhængigt af din nuværende session eller time limit på webhotellet, sende ud til - eksempelvis 80 modtagere ad gangen:
<?php

  $sql = "SELECT navn, email FROM orgTable ORDER BY navn ASC LIMIT 80";
  $res = mysql_query($sql);
  $recipients = array();

  while( $row = mysql_fetch_array($res) )
  {
    $rec = count($recipients);
    $recipients[$rec]["navn"] = $row["navn"];
    $recipients[$rec]["email"] = $row["email"];
  }
 
  // slet de 80 fra køen du lige har hentet
  $sql = "DELETE FROM orgTable ORDER BY navn ASC LIMIT 80";
  mysql_query($sql);

  //afsend
  foreach( $recipients as $recipient )
  {
    $navn = $recipient["navn"];
    $navn = $recipient["email"];

    mail(...);
  }

?>
Avatar billede qub- Novice
08. maj 2010 - 18:23 #3
må indrømme jeg ikke ved hvorfor den gør det, og hvad den overhovedet gør - serveren..

Men jeg har bare oplevet flere gange, at der er mange der ikke har modtaget mailsne (og det er ikke fordi de er blevet smidt i spam)..

Hmm, kan godt se logikken i den kode du kommer med der.. Men smider den ikke kun de første 80 afsted, og så stopper den ligesom? Så skal jeg jo manuelt sætte den til at sende de sidste - og det er lidt bøvlet syns jeg..?
Eller tar jeg fejl...?

Den sku jo gerne ku regne ud at der er xx antal emails tilbage at sende, og så sende dem hvis du forstår...
Avatar billede repox Seniormester
08. maj 2010 - 18:46 #4
Du bestemmer jo selv hvordan du opnår automatikken - det kan du jo enten ved hjælp af et cronjob eller AJAX.
Avatar billede Slettet bruger
08. maj 2010 - 18:53 #5
Hvis du skal sende "en masse" ens mails afsted, til mange forskellige modtagere, er det eneste rigtige at benytte BCC - "blind kopi"

Du skal kun sende 1 mail.

Din server kan i mange tilfælde slippe afsted med at sende den "upstream" på nettet, stadig som kun 1 mail - alle er glade.

BCC istedetfor CC fordi CC burde forbydes!
Avatar billede repox Seniormester
08. maj 2010 - 19:58 #6
#5
Det er jeg ikke enig med dig i - udover det at anvende BCC istedet for CC, men det er kun af privatlivets hensyn.

Der er ikke noget i vejen for at sende 1 mail ad gangen, uanset om det er 200 eller 15000 mails du skal sende ud.

Det kan endda også hjælpe dig i din tracking af statistik og samtidig personliggøre de mails du sender ud - samtidig med at du kan lette afmeldingsprocuderer, login links og så videre...
Avatar billede Slettet bruger
08. maj 2010 - 20:39 #7
Ingen SECRETS i "public service" mails!
- Folk forwarder dem uden at vide det..

Hvordan kan man teste "realistisk" en udsendelse af 15000 (personaliserede) mails()s.. ?
- OG afgøre at de faktisk rammer modtagerne korrekt..?
Uden at ryge i spjældet !?!
Avatar billede repox Seniormester
08. maj 2010 - 21:27 #8
#7
Hvad dine brugere forwarder kan, for dig, være dybt ligegyldigt (naturligvis kan det være et problem hvis din mail indeholder oplysninger som er vigtige for dig er offentligheden foruden, men så må du jo lade være med det) - du har alligevel ingen kontrol over hvad folk kan finde på at sende videre.

PayPal, eWire og lignende ligger jo inde med de samme 'problemer' hvis dit udgangspunkt er at 'folk forwarder mails uden at vide det'... Det er brugerens eget ansvar at værne om de oplysninger.

En 'realistisk' test af udsendelsen af 15000 mails foregår jo ikke - med lidt sund fornuft giver det vist også sig selv. Man 'tester' jo heller ikke udsendelsen af 200 mails (medmindre man virkelig er på herrens mark med hvad man laver). Man tester et par stykker og så giver man den ellers los - og hvis din server ikke kan håndtere det, vil jeg anbefale dig at skifte udbyder.
Avatar billede Slettet bruger
08. maj 2010 - 22:08 #9
>#8
Selvfølgelig ikke til 15000 sagesløse - 15000 navne@ en catch-all mail-box.. eller 3 ude på nettet..?
Man er vel nødt til at prøve det en gang eller 2 før premieren (med så stort et "oplag") ?!


Selvfølgelig er det brugerenes eget ansvar hvis de sender deres brugernavn:password videre.
som det er på eget ansvar at der går ild i PC'en efter man har klikket Acceptér under 2k lawyereese!

common sense & consideration - det er gratis  ; )
Avatar billede repox Seniormester
09. maj 2010 - 14:31 #10
#9
Hvad skulle formålet være med at teste 15000 mails? Hvis de første to-tre mails du sender til din egen testkonto ser ud som forventet, kan man jo med rolighed antage at det vil de resterende mails også gøre.

Hvis du tænker den tekniske kapacitet, handler det naturligvis om at sikre sig at en fyldestgørende kontrol af om hvem der er sendt emails afsted til, i tilfælde af udsendelsen fejler undervejs, således man kan få sendt de manglende mails ud og ikke gensende til modtagere som allerede har fået den.
Avatar billede qub- Novice
04. august 2010 - 22:57 #11
lukker
Avatar billede repox Seniormester
05. august 2010 - 08:19 #12
Var der noget i vejen med de besvarelser du har fået, siden du blot pludseligt vælger at lukke spørgsmålet?
Avatar billede Slettet bruger
05. august 2010 - 09:35 #13
Nok en uundgåelig konsekvens af (Points ude: xxx) i toppen af nye spørgsmpål.
- Hvis en tølper skal lukke 150 gamle spørgsmål (for at virke seriøs) vil det nok komme til at gå lidt vel hurtigt i nogle tilfælde...

Men mon ikke bare det er en overgang, indtil en ny adfærd bider sig fast..

Kombineret selvfølgelig, med den underlige tradition vi har, for at svare med kommentarer, og først rekvirere "et svar" når problemet er løst.
- hvis dit glimrende svar i #2 havde været "officielt", mon så ikke at qub ville have givet dig pointene istedet for (havde jo ligefrem været lettere)..
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