Avatar billede seekasr Nybegynder
22. december 2003 - 18:29 Der er 4 kommentarer og
1 løsning

mail() load på server

Hey

Hvis man skal udsende 100+ mails med funktionen mail(), vil det så være smartest at lave en while() sådan at der bruges en mail() pr post, eller skal man lave en enkelt mail() med et TO/BCC felt der er meget langt?

Hvilken metode laver det største load på serveren? Hvad er bedst?

Tak,
seek
Avatar billede Slettet bruger
22. december 2003 - 18:31 #1
100 mails er ikke et problem at knalde afsted i en løkke med mail.

Men hvis det er samme mail du sender ud til alle, kan du jo ligeså godt bcc'e dem. bcc fungerer fint i bundles af 100.
Avatar billede Slettet bruger
22. december 2003 - 18:42 #2
Hvis du bruger sendmail, kan jeg anbefale en funktion som:

function sendmail($from_mail, $to_mails, $to_name, $reply_to, $subject, $body) {
    if (!is_array($to_mails))
        return false;     
    $bcc = null; $count = count($to_mails); $i = 0;       
    $fp = popen('/usr/sbin/sendmail -t -f'.$from_mail, "w");
    if(!$fp)
        return false;
    fputs($fp, "To: ".$to_name."\n");
    fputs($fp, "Bcc: ");
    foreach($to_mails as $to_mail) {         
      $i++;
      $bcc .= $i != $count ? $to_mail.", " : $to_mail."\n";     
    }
    fputs($fp, $bcc);
    fputs($fp, "Subject: ".$subject."\n");
    fputs($fp, "Reply-to: ".$reply_to."\n\n");   
    fputs($fp, $body);
    fputs($fp, "\n");
    pclose($fp);
    return true;       
}

Hvor $to_mails er et array af email-adresser. Mailen sendes så som BCC til
modtagerne. $to_name vil typisk være navnet på din mailingliste.

Jeg bruger selv ovenstående til en mailingliste med 50.000 tilmeldte, hvor
der sendes mails ud til hovedparten dagligt. Det fungerer fint. Sender dem
i bundles, hvor hver mail har 99 BCC adresser.

Nogle vil nok mene, at det går hurtigere, hvis man benytter eksempelvis
en SMTP klasse, der opretholder forbindelsen til SMTP serveren, og sender
alle mails (istedet for funktionen ovenfor der kalder sendmail for hver
mail bundle). Men det gør det ikke i vores setup!
Avatar billede seekasr Nybegynder
22. december 2003 - 18:48 #3
Glimrende svar! Opretter du lige?

Takker mange gange.

/seek
Avatar billede Slettet bruger
22. december 2003 - 18:49 #4
Selv tak og god fornøjelse.
Avatar billede seekasr Nybegynder
30. december 2003 - 17:20 #5
Det viser sig at 'bcc' først er understøttet på windows-maskiner efter php 4.3, og det er selvfølgelig her kunden har valgt at placere sit site.

Så bliver det alligevel med 1 stk mail() per mail.
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