Avatar billede rhandersen Nybegynder
11. marts 2006 - 09:13 Der er 8 kommentarer

Send MANGE mails med mail()

Hej Alle

Jeg har læst et sted at mail funktionen ikke kan bruges til mere end 1500 modtagere ad gangen.

Så tænkte jeg at man vel bare kan køre en while, så den kun har en modtager i samme funktion.

Vil det rette fejlen, eller give samme resultat?

Mvh Rasmus
Avatar billede kalp Novice
11. marts 2006 - 09:14 #1
kender ikke lige en pause funktion.. men send et par hundrede.. hold en pause og send så yderligere et par hundrede..

det burde vel klare det.
Avatar billede rhandersen Nybegynder
11. marts 2006 - 09:15 #2
Kan man ikke bare bruge while?
Avatar billede kalp Novice
11. marts 2006 - 09:23 #3
http://www.sitepoint.com/article/advanced-email-php

har noget kode som måske kan bruges.. den er faktisk lavet så der kan sendes mange emails  ud med attachments.. men det er vel bare noget du kan se bort fra.
Avatar billede elskermad.dk Nybegynder
11. marts 2006 - 11:43 #4
kalp: sleep(5) pauser php i 5 sekunder
Avatar billede rhandersen Nybegynder
11. marts 2006 - 11:53 #5
hmm.. den kendte jeg ikke:)
Avatar billede whatever Nybegynder
11. marts 2006 - 15:52 #6
Hvis du skal sende så mange e-mails ud, så benyt f.eks. phpmailer (http://phpmailer.sourceforge.net/) og send e-mailene direkte til en smpt-server. Mail() er ikke ligefrem hurtig til at sende alle de e-mails ud med.
Avatar billede whatever Nybegynder
11. marts 2006 - 15:58 #7
Et eksempel på brugen af phpmailer:

<?php

    require("class.phpmailer.php");
    $mail = new PHPMailer();
    $mail->IsSMTP(true);
    $mail->SMTPKeepAlive = true;
    $mail->Host = "mail.dinsmtpserver.dk;
    $mail->SMTPDebug = false;
    $mail->FromName = "afsender navn";
    $mail->From = "info@ditdomæne.dk;
    $mail->Subject = "titel på e-mailen";
    $mail->Body = "indhold i e-mailen";
    $mail->IsHTML(false);
    $res = mysql_query("SELECT email FROM recipients");
    $count = 0;
    $result = "<p>";
    while (list($recipient_email) = mysql_fetch_row($res)) {
        $mail->AddAddress($recipient_email);
        if(!$mail->Send()) {
            $result .= "<b>FEJL:</b> $subscriber_email Gav fejlen: ".$mail->ErrorInfo."<br />";
        } else {
            $result .= "$recipient_email <br />";
        }
        $count++;
        $mail->ClearAllRecipients();
    }

    $mail->ClearAllRecipients();
    $mail->SmtpClose();   
   
    $result .= "</p><p>".($count)." nyhedsbreve sendt!</p>\n";
    echo $result;

?>
Avatar billede whatever Nybegynder
11. marts 2006 - 16:05 #8
$mail->Host skal rettes til smtp-serveren du vil sende igennem.
$mail->FromName skal rettes til afender navnet.
$mail->From skal rettes til afender e-mailen.
$mail->Subject skal rettes til emnet på e-mailen.
$mail->Body skal rettes til indholdet af e-mailen.

Ønsker du at sende mailen som html, skal $mail->IsHTML(false) ændres til $mail->IsHTML(true).

mysql_query'en skal du ændre så den passer til din databasestruktur.

Du skal desuden være opmærksom på, at nogle webhoteludbydere ikke tillader at der via deres normale smtp-server sendes ret mange e-mails adgangen. Dette er f.eks. gældende hos Scannet, de har så en speciel smpt-server til dette formål.

Desuden skal du nok sørge for at max_execution_time i php sættes højere op, da scriptet vil køre i et stykke tid. Hvor lang tid det tager at afsende e-mailene, afhænger af antallet af modtagere. Men prøv at sætte max_execution_time til 900 sekunder.

Hvor modtagere skal du sende til?
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