07. februar 2010 - 16:22Der er
5 kommentarer og 2 løsninger
Newsletter gentager afsender
Jeg har en newsletter funktion, som virker efter hensigten, men de der modtager får gentaget afsendernavnet lige så mange gange som det antal modtagere, det har været sendt til. Altså: Fra: Company name <info@company.xx>;Company name <info@company.xx>;Company name <info@company.xx>;Company name <info@company.xx>;Company name <info@company.xx>; osv...
Nogen der kan hjælpe med en let metode til at undgå de gentagelser?
?> <b><?php echo $numrows?> emails are sent:</b><p> <textarea rows="20" style="width:100%" readonly><?php while ($row = mysql_fetch_array($query)) { $sentto = $row["firstname"]." ".$row["lastname"]; $mailto = $row["email"]; $subject = "Our Newsletter - ".$headline; $message = (" <html> <head> <style> body{font-family:verdana;font-size:12px;color:#300;background:#fcf0bb} #container{padding:10px;background:#fef0aa;border:1px solid #300;width:600px} h1{font-size:14px;letter-spacing:2px} hr{border:1px solid #a73} a{font-family:verdana;font-size:12px;color:#300} table{font-family:verdana;font-size:12px;color:#300} </style> </head> <body> <div id='container'> <b>Company Newsletter</b> <h1>".$headline."</h1> <hr> <br> If you have any questions please reply to this email.<br> <br> company name<br> <br> </body> </html> "); $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=UTF-8\r\n"; $headers .= "From: Company <info@company name.xx>\r\n"; mail($mailto, $subject, $message, $headers); echo $sentto." <".$mailto.">;\n"; } ?></textarea>
.... og saa nok rette koden til saa du ikke gendanner alle variablerne for hver addressat af nyhedsbrevet. Definer foerst en gang for alle $subject, $message, og $headers, saa lav din query og for hver row traek $sentto og $mailto ud og send mailen. Saadan noget som:
"Problemet" med at definere variablene ad en gang, er blot at du ikke kan brevflette. Vi kan sagtens blive enige om at de fleste variable kan sættes udenfor løkken - men skal du have eksempelvis navnet med i nyhedsbrevets indhold skal du til at bruge sprintf(...) eller lignende - og det er jeg ikke helt sikker på at trådstarter er "klar" til at springe ud i.
Desuden er PHP slet ikke optimalt til masseudsendelse af mails. Skal du bruge PHP til udsendelse af mails, bør det køre commandline på serversiden (sådan at det ikke afhænger af en brugers kald til siden - og så den ikke når at løbe tør for tid). Desuden bør PHPs mail(...) metode ikke benyttes til en sådan udsendelse, da den opretter og lukker forbindelsen til SMTP-serveren, hvor gang funktionen kaldes.
niclasb, af koden fremgik det at nyhedsbrevet ikke indeholder nogen variabel der kommer fra mysql querien. Saa jeg tror vi er nogenlunde enige om hvilke variable der kan (og boer) saettes udenfor loekken.
1. Her opretter jeg saa det svar du spurgte efter i forbindelse med det oprindelige spoergsmaal.
2. Serverside newsletter har jeg ikke umiddelbart et bud paa. Maaske skulle du oprette det som et nyt spoergsmaal for at faa opmaerksomheden fra en bredere kreds af Eksperten medlemmer.
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.