Avatar billede krydset Nybegynder
05. december 2003 - 23:55 Der er 9 kommentarer og
1 løsning

trække emails ud fra db og sende mails

Hvordan gør man det??

kan bruge det her og i så fald hvor skal mail() ind henne??



$res = mysql_query("SELECT e_mail FROM mail_liste") or die(mysql_error());
if($_POST[mail_nyhed]) {
    while ($row = mysql_fetch_array($res)) {
        echo $row[e_mail];
    }
}

?>
   

//krydset
Avatar billede googolplex Novice
06. december 2003 - 00:01 #1
if($_POST[mail_nyhed]) {
    $res = mysql_query("SELECT e_mail FROM mail_liste") or die(mysql_error());
    while ($row = mysql_fetch_array($res)) {
        echo $row[e_mail];
        mail();
    }
}
Avatar billede googolplex Novice
06. december 2003 - 00:01 #2
Men det kommer lidt an på hvor mange du skal sende...
Avatar billede krydset Nybegynder
06. december 2003 - 00:07 #3
måske nogle 100...
Avatar billede krydset Nybegynder
06. december 2003 - 00:09 #4
Takker det fungede..

Har hørt noget om timeout ved brug af php´s mail, hvor meget skal man binde sigi det?
Avatar billede googolplex Novice
06. december 2003 - 00:12 #5
Hvis du skal sende mange mails, så timer dit script normalt ud efter 30 sekunder (ved de fleste udbydere). Svært at sige hvor mange du kan sende. Jeg sendt 1000 med mail() ved 120 sek timeout. Det var tomme mails.
Avatar billede krydset Nybegynder
06. december 2003 - 00:13 #6
Hvad hvis man sidder på egen server??
Avatar billede googolplex Novice
06. december 2003 - 00:15 #7
Så er der vel ingen grænser :)

Men med mail() fungerer det således.

1. åbner forbindelse til smtp-serveren.
2. sender én mail!
3. lukker forbindelsen til smtp-serveren.
4. Forfra!

Med en smtp-klasse åbner den én gang, sender alle dine mails og lukker derefter :)
Avatar billede krydset Nybegynder
06. december 2003 - 00:15 #8
Hvor kan man finde noget om en smtp klasse, vil gerne se nærmere på det?
Avatar billede googolplex Novice
06. december 2003 - 00:18 #9
<?php


// smtp_client class -------------------------------------------------------
// use:
//        $smtp= new smtp_client();
//        $smtp->email($from, $to[0], $to_name[0], $header[0], $subject[0], $body[0]);
//        $smtp->email($from, $to[1], $to_name[1], $header[1], $subject[1], $body[1]);
//        $smtp->send();

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 = '') {
        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");
        }
    }
}

?>
Avatar billede krydset Nybegynder
06. december 2003 - 00:23 #10
takker det gemmer jeg lige ;)

Tak for hjælpen
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