Avatar billede spidr Nybegynder
05. februar 2005 - 14:30 Der er 17 kommentarer og
1 løsning

News mail

Jeg har tidligere haft et script til at sende news mails ud, men det virker ikke mere.. Jeg vil tro det er fordi der er for mange i databasen.
Sendet det nemlig ud til over 1500, så ville høre om nogen her kunne hjaelpe mig med at fikse et der sender milsne i små potioner eller noget i den retning? eller har ideer til hvad jeg kan gøre?
Evt. et link til et jeg kan dl og benytte gratis :)?
Avatar billede jakobdo Ekspert
05. februar 2005 - 16:27 #1
Hvordan laver du emailen i dag?

Måske scriptet timer ud?

Du kunne evt prøve noget i stil med:

$result = mysql_query("SELECT * FROM modtagere_af_news");
while($row = mysql_fetch_assoc($result))
{
mail($row['email'], "Nyhedsbrev...", "Hej med dig!");
}
Avatar billede spidr Nybegynder
05. februar 2005 - 16:29 #2
ja det timer ud, så tror scriptet skal klare forespørgslen i små bider?

Kan sagtens lave et scritpd er sender mails til dem alle, problemmet er som sagt at siden får time out

hvad gør assoc?
Avatar billede jakobdo Ekspert
05. februar 2005 - 16:33 #3
Avatar billede spidr Nybegynder
05. februar 2005 - 16:56 #4
kan ik lige se hvad forskellen på assoc og array er, men ehm nok bare mig der ik lige fatter det de skriver..


og det der time_limit kan jeg ikek få til at virke :(
Avatar billede jakobdo Ekspert
05. februar 2005 - 16:59 #5
fetch_array returnere et array, så der kan du kalde få info ud via $row[0], $row[1] osv...

via fetch_assoc kan du bruge feltets navn fra din tabel!
Så laver du et udtrak ala:

SELECT fornavn, efternavn FROM brugere...

Så kan du $row['fornavn'] og $row['efternavn']

time_limit virker kun hvis safe_mode ikke er on! (noget hos din udbyder)
Avatar billede spidr Nybegynder
05. februar 2005 - 17:09 #6
tak :)

ja ved godt hvad det er, og det er desvaere sat til.. nogen andre ideer?
Avatar billede jakobdo Ekspert
05. februar 2005 - 17:25 #7
Ikke rigtigt!
Eller også skal du finde nyhedsbrev udsendelse eksternt!

Hvordan laver du udsendelsen?
Kører du et script eller?
Avatar billede spidr Nybegynder
05. februar 2005 - 17:28 #8
ja, før kørte jeg bare et ret simpelt mail script.. men det får jo timeout :S
Avatar billede jakobdo Ekspert
05. februar 2005 - 17:39 #9
Jamen er det et du går ind på en admin site, og trykker udsend nyhedsbrev?

Man kunne jo gøre det sådan så det evt deles op?
Avatar billede spidr Nybegynder
05. februar 2005 - 17:41 #10
nej det ser sådan ud:
Så aendre jeg bare de 2 html filer.

<?
    $_MAIL                        = array(
        "MyEmail"                => "Webmaster@goog.dk",
        "SMTPServer"                => "pop.goog.dk",
        "SMTPPort"                => 25,
        "Terminator"                => "\r\n",
        "Authorise"                => false,
        "Username"                => "webmaster@goog.dk",
        "Password"                => "XXXX",
        "FlagErrors"                => false,
        "ErrorNumber"                => 0,
        "ErrorMessage"                => ""
    );

    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;
    }


$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", "XXXX");

mysql_select_db("goog_dk");

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

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"]);

}
?>
Avatar billede jakobdo Ekspert
05. februar 2005 - 17:51 #11
Hvorfor bruger du ikke bare funktionen: mail()?
Altså i stedet for sendEmail?
Avatar billede jakobdo Ekspert
05. februar 2005 - 17:52 #12
Det gør du også! Nevermind!
Avatar billede jakobdo Ekspert
05. februar 2005 - 18:02 #13
Du kunne jo lave en side, hvor du så trykker på nogle links, og så sendes der f.eks. til 100 brugere ad gangen!

Så skal du godt nok trykke 13 gange, men så timer den da ikke ud!
Avatar billede spidr Nybegynder
05. februar 2005 - 18:11 #14
jep, også den løsning jeg har fundet..
syntes bare det er lidt besvaerligt :S
og hvis nu jeg får mange flere brugere bliver det kun endnu besvaerligere..

<?
if (!isset($antal)) {
$antal = 0;


}
    $_MAIL                        = array(
        "Terminator"                => "\r\n"
    );

    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"];
        $result                    = mail("\"" . $contactName . "\" <" . $contactEmail . ">", $subject, $message, $headers);
        return $result;
    }


$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", "xxxx");

mysql_select_db("goog_dk");


$query = mysql_query("SELECT navn, email FROM maillist3 order by id limit $antal,100");


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

echo("<br>$navn $email - SEND");

}


$next = 100 + $antal;
print "<br><br><a href='mail.php?antal=$next'>NEXT</a>";
?>
Avatar billede jakobdo Ekspert
05. februar 2005 - 20:00 #15
Du har helt ret!
Ellers må du stille din egen server op, så kan du jo selv styre timeout!
Og så vil man nok slet ikke lave udsendelsen direkt i php, hvis egen server var til rådighed!
Avatar billede spidr Nybegynder
05. februar 2005 - 21:50 #16
nej ved jeg godt, vil os gerne have min egen server... men tror ik rigtigt jeg kan få en forbindelse der kan klare min servers load for rimmelige penge :S
Avatar billede jakobdo Ekspert
05. februar 2005 - 22:40 #17
Du kunne jo bare nøjes med selv at stå for udsendelse af nyhedsbrevene?
Avatar billede spidr Nybegynder
05. februar 2005 - 23:27 #18
ja det er selvfølgelig rigtigt.. Men bare lidt meget at gøre for et nyhedsbrev der bliver sendt ud højest engang om måneden :)

Men tak for det :)
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