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 :)?
Annonceindlæg fra gavdi
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!"); }
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?
05. februar 2005 - 16:33
#3
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 :(
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)
05. februar 2005 - 17:09
#6
tak :) ja ved godt hvad det er, og det er desvaere sat til.. nogen andre ideer?
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?
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
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?
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"]); } ?>
05. februar 2005 - 17:51
#11
Hvorfor bruger du ikke bare funktionen: mail()? Altså i stedet for sendEmail?
05. februar 2005 - 17:52
#12
Det gør du også! Nevermind!
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!
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>"; ?>
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!
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
05. februar 2005 - 22:40
#17
Du kunne jo bare nøjes med selv at stå for udsendelse af nyhedsbrevene?
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 :)
Vi tilbyder markedets bedste kurser inden for webudvikling