Avatar billede jenslyn_s Nybegynder
18. maj 2005 - 18:06 Der er 2 kommentarer og
1 løsning

SMTP mailer og mange newsmails

Skal sende 500 mails afsted med en smtp-mailer, men kan serveren klare dette eller vil jeg få "max exec. time exceeded"? (udbyderen er lorte-B-one...)

For at udngå evt. timeout har jeg tænkt på følgende løsning.

- smide alle mail add. i et array

- loope de første 10 mail-add. i arrayet, dernæst slette dem fra arrayet

- pause i 10 sec.

- loade siden igen og loope de næste 10

Dette vil jeg så gøre indtil arrayet er tomt... Pros and cons, tak.
Avatar billede jenslyn_s Nybegynder
18. maj 2005 - 18:11 #1
Min mail-funkt. ser således ud:
Er det nok bare at loope de 2nederste linier:
    $smtp->email($from, $toPlain, $toName, $header, $subject, $body);
    $smtp->send();
//------- MIN KODE -------------------------------------->
$fp = fsockopen("smtp1.b-one.net", 25);
    //mail($to, $subject, $body, $header);
fclose($fp);


class smtp_client {
    var $connection;
    var $server;
    var $elog_fp;
    var $log_file='smtp_client.log';
    var $do_log=true;


    // default constructor
    function smtp_client($server='smtp1.b-one.net') { //din udbyders smtp server
        if (!$server) $this->server="localhost";
        else $this->server=$server;
     
        $this->connection = fsockopen($this->server, 25);
        if ($this->connection <= 0) return 0;

        $this->elog(fgets($this->connection, 1024));
        $this->elog("HELO xyz\r\n", 1);
        fputs($this->connection,"HELO xyz\r\n");
        $this->elog(fgets($this->connection, 1024));
        }

    function email($from_mail, $to_mail, $to_name, $header, $subject, $body) {
        if ($this->connection <= 0) return 0;

        $this->elog("MAIL FROM:$from_mail", 1);
        fputs($this->connection,"MAIL FROM:$from_mail\r\n");
        $this->elog(fgets($this->connection, 1024));

        $this->elog("RCPT TO:$to_mail", 1);
        fputs($this->connection, "RCPT TO:$to_mail\r\n");
        $this->elog(fgets($this->connection, 1024));

        $this->elog("DATA", 1);
        fputs($this->connection, "DATA\r\n");
        $this->elog(fgets($this->connection, 1024));

        $this->elog("Subject: $subject", 1);
        $this->elog("To: $to_name", 1);
        fputs($this->connection,"Subject: $subject\r\n");
        fputs($this->connection,"To: $to_name\r\n");

        if ($header) {
            $this->elog($header, 1);
            fputs($this->connection, "$header\r\n");
            }

        $this->elog("", 1);
        $this->elog($body, 1);
        $this->elog(".", 1);
        fputs($this->connection,"\r\n");
        fputs($this->connection,"$body \r\n");
        fputs($this->connection,".\r\n");
        $this->elog(fgets($this->connection, 1024));

        return 1;
        }


    function send() {
        if ($this->connection) {
            fputs($this->connection, "QUIT\r\n");
            fclose($this->connection);
            $this->connection=0;
            }
        }

    function close() { $this->send(); }


    function elog($text, $mode=0) {
        if (!$this->do_log) return;

        // open file
        if (!$this->elog_fp) {
            if (!($this->elog_fp=fopen($this->log_file, 'a'))) return;
            fwrite($this->elog_fp, "\n-------------------------------------------\n");
            fwrite($this->elog_fp, " Sent " . date("Y-m-d H:i:s") . "\n");
            fwrite($this->elog_fp, "-------------------------------------------\n");
            }

        // write to log
        if (!$mode) fwrite($this->elog_fp, "    $text\n");
        else fwrite($this->elog_fp, "$text\n");
        }
    }

$smtp = new smtp_client;
$smtp -> smtp_client();


    $smtp->email($from, $toPlain, $toName, $header, $subject, $body);
    $smtp->send();
<-----------------------------------------------------------
Avatar billede smirnoff Nybegynder
18. maj 2005 - 23:28 #2
øhm - hvis du blot er bange for at scriptet kører ud efter et tidsrum, kan du sætte set_time_limit(0) i toppen af dit script -- dog ikke hvis serveren kører i safe_mode
Avatar billede jenslyn_s Nybegynder
18. juni 2006 - 19:56 #3
lukke tid
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