Avatar billede spidr Nybegynder
01. februar 2005 - 21:07 Der er 4 kommentarer og
1 løsning

Problemer med timout på nyheds mail sender

Jeg bruger et script jeg engang lavede med hjaelp her indefra til at sende mails, men nu er der vidst for mange brugere i nyheds brevet, den vil ivertifald ikke sende mails ud, den kommer med den her besked:

HTTP 500 - Intern serverfejl

mail.php:

<?

require("so_mail.inc.php");

$fileHandle1 = @fopen("newsletter1.htm", "r");

$fileContent1 = @fread($fileHandle1, filesize("newsletter1.htm"));

fclose($fileHandle1);

$fileHandle2 = @fopen("newsletter2.htm", "r");

$fileContent2 = @fread($fileHandle2, filesize("newsletter2.htm"));

fclose($fileHandle2);

mysql_connect("localhost", "goog_dk", "xxxxxx");

mysql_select_db("goog_dk");

$result = mysql_query("SELECT * FROM maillist");

while ($row = mysql_fetch_array($result)) {

sendEmail("GooG.dk", "news@goog.dk", $row["navn"], $row["email"], "goog.dk nyhedsbrev!", $fileContent1 . $row["navn"] . $fileContent2);

echo("<br>$row[email] - ERROR " . $_ERROR . ": " . $_MAIL["ErrorNumber"] . $_MAIL["ErrorMessage"]);

}

?>

so_mail.inc.php
<?php

//----- SETUP MAIN ARRAY ---------------------------------------------------------------------------------------------------------------//
    $_MAIL                        = array(
        "MyEmail"                => "Webmaster@goog.dk",
        "SMTPServer"                => "pop.goog.dk",
        "SMTPPort"                => 25,
        "Terminator"                => "\r\n",
        "Authorise"                => false,
        "Username"                => "webmaster@goog.dk",
        "Password"                => "xxxxxx",
        "FlagErrors"                => true,
        "ErrorNumber"                => 0,
        "ErrorMessage"                => ""
    );

//----- SEND EMAIL ---------------------------------------------------------------------------------------------------------------------//
    function email($to, $subject, $message, $headers = "") {
        global $_MAIL;
        global $_ERROR;
        // Connect to socket
        $fp                    = fsockopen($_MAIL["SMTPServer"], $_MAIL["SMTPPort"], $_MAIL["ErrorNumber"], $_MAIL["ErrorMessage"], 10);
        if (!$fp) {
            if ($_MAIL["FlagErrors"])    $_ERROR            = 30;
            return false;
        }
        // Set socket timeout
        socket_set_timeout($fp, 10);
        $reply                    = getresponse($fp, "220");
        if ($reply !== true) {
            $_MAIL["ErrorMessage"]        = $reply;
            if ($_MAIL["FlagErrors"])    $_ERROR            = 32;
            return false;
        }
        // Perform authorisation if necessary
        if ($_MAIL["Authorise"]) {
            fputs($fp, "EHLO SERVER" . $_MAIL["Terminator"]);
            $reply                = getresponse($fp, "250");
            if ($reply === true) {
                fputs($fp, "AUTH LOGIN" . $_MAIL["Terminator"]);
                $reply            = getresponse($fp, "334");
            }
            if ($reply === true) {
                fputs ($fp, base64_encode($_MAIL["Username"]) . $_MAIL["Terminator"]);
                $reply            = getresponse($fp, "334");
            }
            if ($reply === true) {
                fputs ($fp, base64_encode ($_MAIL["Password"]) . $_MAIL["Terminator"]);
                $reply            = getresponse($fp, "235");
            }

            if ($reply !== true) {
                if (ereg("^502", $reply) || ereg("^501", $reply)) {
                    $_MAIL["ErrorMessage"]        = $reply;
                    if ($_MAIL["FlagErrors"])    $_ERROR            = 38;
                    return false;
                } else {
                    $_MAIL["ErrorMessage"]        = $reply;
                    if ($_MAIL["FlagErrors"])    $_ERROR            = 39;
                    return false;
                }
            }   
        } else {
            fputs($fp, "HELO SERVER" . $_MAIL["Terminator"]);
            $reply                = getresponse($fp, "250");
            if ($reply !== true) {
                $_MAIL["ErrorMessage"]            = $reply;
                if ($_MAIL["FlagErrors"])        $_ERROR            = 31;
                return(false);
            }
        }
        // Start sending email headers
        fputs($fp, "MAIL FROM: " . $_MAIL["MyEmail"] . $_MAIL["Terminator"]);
        $reply                    = getresponse($fp, "250");
        if ($reply !== true) {
            $_MAIL["ErrorMessage"]        = $reply;
            if ($_MAIL["FlagErrors"])    $_ERROR            = 33;
            return false;
        }
        // Find all receipients given
        $receipient                = strtok($to, ",");
        while ($receipient !== false) {
            $receipient            = trim($receipient);
            fputs($fp, "RCPT TO: " . $receipient . $_MAIL["Terminator"]);
            $reply                = getresponse($fp, "250");
            if ($reply !== true) {
                $_MAIL["ErrorMessage"]            = $reply;
                if ($_MAIL["FlagErrors"])        $_ERROR            = 34;
                return false;
            }
            $receipient            = strtok(",");
        }
        // Send more email headers
        fputs($fp, "DATA" . $_MAIL["Terminator"]);
        $reply                    = getresponse($fp, "354");
        if ($reply !== true) {
            $_MAIL["ErrorMessage"]        = $reply;
            if ($_MAIL["FlagErrors"])    $_ERROR            = 35;
            return false;
        }
        // Send From header
        if (!ereg("from:", $headers) && !ereg("From:", $headers) && !ereg("FROM:", $headers)) {
            fputs($fp, "From: <" . $_MAIL["MyEmail"] . ">" . $_MAIL["Terminator"]);
        }
        // Send To header
        if (!ereg("to:", $headers) && !ereg("To:", $headers) && !ereg("TO:", $headers)) {
            $receipient            = strtok($to, ",");
            $receipient            = trim($receipient);
            fputs($fp, "To: <" . $receipient . ">");
            $receipient            = strtok(",");
            while ($receipient !== false) {
                $receipient        = trim($receipient);
                fputs($fp, ", <" . $receipient . ">");
            }
            fputs($fp, $_MAIL["Terminator"]);
        }
        // Send specified headers
        if ($headers != "") {
            $headers            = trim($headers);
            fputs($fp, $headers . $_MAIL["Terminator"]);
        }
        // Send Subject
        $subject                = trim($subject);
        fputs($fp, "Subject: " . $subject . $_MAIL["Terminator"]);
        // Send Message
        $message                = rtrim($message);
        $message                = str_replace("\n", "", $message);
        fputs($fp, $_MAIL["Terminator"] . $message);
        fputs($fp, $_MAIL["Terminator"] . "." . $_MAIL["Terminator"]);
        $reply                    = getresponse($fp, "250");
        if ($reply !== true) {
            $_MAIL["ErrorMessage"]        = $reply;
            if ($_MAIL["FlagErrors"])    $_ERROR            = 36;
            return false;
        }
        // End email
        fputs($fp, "QUIT" . $_MAIL["Terminator"]);
        fclose($fp);
        return true;   
    }
   
//----- GET RESPONSE FROM SOCKET -------------------------------------------------------------------------------------------------------//
    function getresponse($fp, $code) {
        while (ereg("^" . $code . "-", ($reply = fgets($fp, 1024))));
        if (ereg("^" . $code, $reply)) {
            return true;
        } else {
            return $reply;
        }
    }


//----- SEND MAIL ----------------------------------------------------------------------------------------------------------------------//
    function sendEmail($myName, $myEmail, $contactName, $contactEmail, $subject, $message) {
        global $_MAIL;
        $headers                = "MIME-Version: 1.0" . $_MAIL["Terminator"];
        $headers                .= "Content-Type: text/html;charset=iso-8859-1" . $_MAIL["Terminator"];
        $headers                .= "To: \"" . $contactName . "\" <" . $contactEmail . ">" . $_MAIL["Terminator"];
        $headers                .= "From: \"" . $myName . "\" <" . $myEmail.">" . $_MAIL["Terminator"];
        $headers                .= "Reply-To: " . $myEmail . $_MAIL["Terminator"];
        $headers                .= "Return-Path: \"" . $myName . "\" <" . $myEmail . ">" . $_MAIL["Terminator"];
        $headers                .= "X-Sender: \"" . $myName . "\" <" . $myEmail . ">" . $_MAIL["Terminator"];
        $headers                .= "X-Mailer: MyMailer v1.1" . $_MAIL["Terminator"];
        $headers                .= "X-Priority: 1" . $_MAIL["Terminator"];
        $headers                .= "X-MSMail-Priority: High" . $_MAIL["Terminator"];
        $result                    = mail("\"" . $contactName . "\" <" . $contactEmail . ">", $subject, $message, $headers);
        return $result;
    }
?>
Avatar billede amews_aj Nybegynder
01. februar 2005 - 22:10 #1
HVor er den fil som sender mailen via denne side,, altså formen.. Mener 500 fx komemr hvis den sender til side som ikke findes...
Avatar billede spidr Nybegynder
01. februar 2005 - 22:11 #2
der er ikke nogen formel, man åbner mail.php direkte, og så sender den ellers bare.. eller det gjorde den i gamle dage..

men den er meget lang tid om overhovedet at loade noget :D
Avatar billede amews_aj Nybegynder
01. februar 2005 - 22:19 #3
ok, det er noget med at sende af flere omgange, det må du nok have anden til at hjælp med så...
Avatar billede spidr Nybegynder
01. februar 2005 - 22:45 #4
ja det havde jeg faktisk også taenkt på, men kunne ikke lige se hvordan jeg sku dele den op. Måske noget med noget limit, og så vidersend efter 30 sec eller noget :S
Avatar billede spidr Nybegynder
16. februar 2005 - 17:33 #5
Fik jo aldrig rigtigt fixet det her, så lukker den.
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