Avatar billede para7 Nybegynder
07. februar 2010 - 16:22 Der 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." &lt;".$mailto."&gt;;\n";
}
?></textarea>
Avatar billede nicklasb Nybegynder
07. februar 2010 - 16:41 #1
I første linje med $headers, skal du fjerne punktummet foran ligheds-tegnet. Altså - så der i stedet står:

$headers = "MIME-Version: 1.0\r\n";
07. februar 2010 - 17:01 #2
.... 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:

<?php
$headline = "...";
$subject = "Our Newsletter - " . $headline;
$message = "<html><head> ...... </html>";
$headers = "Mime-Version.....From:Company....";

mysql querien

while($row = mysql_fetch_array($query)
{
  $sentto = $row["firstname"]." ".$row["lastname"];
  $mailto = $row["email'];
  mail($mailto, $subject, $message, $headers);
  echo $sentto." &lt;".$mailto."&gt;;\n";
}
?>
Avatar billede nicklasb Nybegynder
07. februar 2010 - 17:25 #3
"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.
07. februar 2010 - 18:05 #4
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.
Avatar billede para7 Nybegynder
08. februar 2010 - 07:04 #5
Tak I to. Christian_Belgien, du må også gerne lige sende svar.

Det med serverside newsletter, hvordan kan jeg mon nu lave det?
08. februar 2010 - 08:44 #6
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.
Avatar billede para7 Nybegynder
08. februar 2010 - 10:22 #7
Netop og tak for nu...
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