Avatar billede amx_dk Nybegynder
30. marts 2006 - 01:05 Der er 55 kommentarer og
1 løsning

Afsendelse af nyhedsbrev

Hej, jeg har lidt problemer med mit nyhedsbrev. Det skal sendes ud som html. og sendes ud til 1500 email adresser.

Hvordan kan jeg gøre det. frem til nu har jeg brugt bcc. men jeg kan se at det gør at mine emails ofte bliver opfattet som spam på modtager serverne.
Avatar billede jakobdo Ekspert
30. marts 2006 - 10:05 #1
Det kan også være du ikke har kodet emails korrekt.
Bcc eller To burde ikke give udslag i om emailen opfattes som spam eller ej.
Avatar billede amx_dk Nybegynder
30. marts 2006 - 10:25 #2
Hejsa, der er helt sikkert ikke fejl i mailen. Jeg bruger dog en web klient til at sende mails.  Da outlook ikke kan sende html mails uden at inkl. alt indhold i mailen.  altså man kan ikke have billeder liggende på en server
Avatar billede jakobdo Ekspert
30. marts 2006 - 10:30 #3
Nu du siger web klient, har det så noget med php at gøre?
Avatar billede amx_dk Nybegynder
30. marts 2006 - 10:36 #4
nej det har det ikke. Men det jeg gerne vil slippe for er at sende det ud via min web klient.  jeg vil gerne gøre det på en smartere måde. Helst med php
Avatar billede jakobdo Ekspert
30. marts 2006 - 10:39 #5
Hvor meget php kan du selv?
Avatar billede amx_dk Nybegynder
30. marts 2006 - 10:50 #6
jeg kan ikke selv bygge noget op, men jeg kan modificerer
Avatar billede jakobdo Ekspert
30. marts 2006 - 10:53 #7
1500 er en del adresser, så man kunne evt lave en formmail, hvor du indtaster emne og indhold og den sender så en email til hver.
Men så er spørgsmålet om den skal sende en email til hver, altså 1500 forbindelser til smtp-serveren, eller om man skal sende dem via BCC og så afsende 10 ad gangen.

Vil du have en herfra exp.dk skal lave en funktionel løsning til dig?
Eller vil du have hints og prøve selv?
Avatar billede amx_dk Nybegynder
30. marts 2006 - 10:56 #8
man fristes jo til at sige det sidste.  jeg havde håbet på at der lå en kode et sted man selv kunne modificere
Avatar billede jakobdo Ekspert
30. marts 2006 - 11:13 #9
Du kunne evt starte med at lave en simpel formmail:

http://www.eksperten.dk/spm/255524

Og når den virker, så tilføjer vi løkken som smider emailen ud til alle 1500 brugere.
Avatar billede den-evil Nybegynder
30. marts 2006 - 11:51 #10
evt brug denne, også lav en while løkke der looper igennem alle du skal sende til:

http://phpmailer.sourceforge.net/
Avatar billede amx_dk Nybegynder
30. marts 2006 - 15:06 #11
ok, jeg kan se jeg skal have en til at hjælpe mig lidt.  løkke der looper? hvordan?
Avatar billede den-evil Nybegynder
30. marts 2006 - 15:17 #12
$SQL = "SELECT email FROM tabel";
$mq = mysql_query($SQL) or die(mysql_error()):

while($row = mysql_fetch_assoc($mq)){

//Her udsender du så!


}
Avatar billede jakobdo Ekspert
30. marts 2006 - 15:17 #13
$query = mysql_query("SELECT navn,email FROM brugere WHERE noget = andet");
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query)
{
$mail->AddAddress($row['email'],$row['navn']);
if(!$mail->Send())
{
  echo "Message was not sent to ".$row['email']."<p>";
  echo "Mailer Error: " . $mail->ErrorInfo;
  exit;
}
}
}
Avatar billede amx_dk Nybegynder
30. marts 2006 - 15:50 #14
jakobdo,  hvor skal den del af html koden jeg vil sende sættes hen?
Avatar billede jakobdo Ekspert
30. marts 2006 - 15:58 #15
Den indsætter du evt mellem:
if(mysql_num_rows($query)>0)
{
//<---- HTML KODE HER
$mail->Body    =  "This is the <b>HTML body</b>";
$mail->AltBody  =  "This is the text-only body";
while($row = mysql_fetch_assoc($query)
Avatar billede amx_dk Nybegynder
30. marts 2006 - 16:02 #16
det vil sige at dette skulle kunne virke hvis jeg bare sætter det ind i et dokument, indsætter min database info.  kan man ikke lave en knap man skal trykke på for at sende det?

$query = mysql_query("SELECT navn,email FROM brugere WHERE noget = andet");
if(mysql_num_rows($query)>0)
{

Den indsætter du evt mellem:
if(mysql_num_rows($query)>0)
{
//<---- HTML KODE HER
$mail->Body    =  "This is the <b>HTML body</b>";
$mail->AltBody  =  "This is the text-only body";
while($row = mysql_fetch_assoc($query)


while($row = mysql_fetch_assoc($query)
{
$mail->AddAddress($row['email'],$row['navn']);
if(!$mail->Send())
{
  echo "Message was not sent to ".$row['email']."<p>";
  echo "Mailer Error: " . $mail->ErrorInfo;
  exit;
}
}
}
Avatar billede jakobdo Ekspert
30. marts 2006 - 16:16 #17
Noget i denne stil:

<?php
if(isset($_POST['sendEmail']))
{
    require("class.phpmailer.php");
    require("FORBINDTILMYSQL.php"); //<------- FORBIND TIL DIN DATABASE

    $mail = new PHPMailer();
   
    $mail->IsSMTP();                                  // send via SMTP
    $mail->Host    = "smtp1.site.com;smtp2.site.com"; // SMTP servers
    $mail->SMTPAuth = true;    // turn on SMTP authentication
    $mail->Username = "jswan";  // SMTP username
    $mail->Password = "secret"; // SMTP password
   
    //HUSK AT RET TIL DIN EMAIL...
    $mail->AddReplyTo("info@site.com","Information");
    $mail->From    = "from@email.com";
    $mail->FromName = "Mailer";
   
    $mail->WordWrap = 50;                              // set word wrap
    //Du skal nok ikke bruge vedhæftede filer...
    //$mail->AddAttachment("/var/tmp/file.tar.gz");      // attachment
    //$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
    $mail->IsHTML(true);                              // send as HTML
   
    $mail->Subject  =  "Here is the subject";
    $mail->Body    =  "This is the <b>HTML body</b>";
    $mail->AltBody  =  "This is the text-only body";
   
    $query = mysql_query("SELECT navn,email FROM brugere WHERE noget = andet");
    if(mysql_num_rows($query)>0)
    {
        while($row = mysql_fetch_assoc($query)
        {
            $mail->AddAddress($row['email'],$row['navn']);
            if(!$mail->Send())
            {
              echo "Message was not sent to: ".$row['email']."<p>";
              echo "Mailer Error: " . $mail->ErrorInfo;
              exit;
            }
            echo "Message has been sent to: ".$row['email']."<br />";       
        }
    }   
}
else
{
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
    echo '<input type="submit" name="sendEmail" valye="Afsend emails">';
    echo '</form>';
}

?>
Avatar billede amx_dk Nybegynder
30. marts 2006 - 17:14 #18
Hvad betyder lige dette ?    require("class.phpmailer.php");

er det noget jeg skal installerer?
Avatar billede den-evil Nybegynder
30. marts 2006 - 17:25 #19
nope, det er ligesom include();

Det script jeg henviste til før, indeholder de filer du skal bruge...
dvs class.phpmailer.php skal ligge i samme mappe som dit script
Avatar billede amx_dk Nybegynder
31. marts 2006 - 12:44 #20
Jeg sidder nu og roder lidt med det.
er der mulighed for at nogen kan give mig et eksempel på hvordan sådan en kan se ud?:
require("FORBINDTILMYSQL.php"); //<------- FORBIND TIL DIN DATABASE
Avatar billede den-evil Nybegynder
31. marts 2006 - 12:48 #21
$host = "host.host.dk",
$DBuser = "brugernavn";
$DBpass = "password";
$DB = "databasenavn";

    mysql_connect($host, $DBuser, $DBpass);
    mysql_select_db($DB);
Avatar billede amx_dk Nybegynder
31. marts 2006 - 13:04 #22
ok, så spørger jeg nok lidt dumt. men kan man køre et script lokalt på ens pc. eller skal det være uploaded på en server?
Avatar billede den-evil Nybegynder
31. marts 2006 - 13:05 #23
Du kan godt køre det lokalt hvis du har sat en server op.
http://www.wampserver.com/
Avatar billede jakobdo Ekspert
31. marts 2006 - 13:19 #24
Du får også lige et svar fra mig. (antager du efterhånden har fået svar på dit spørgsmål)
Avatar billede amx_dk Nybegynder
31. marts 2006 - 13:22 #25
ok.

$host = "host.host.dk",
$DBuser = "brugernavn";
$DBpass = "password";
$DB = "databasenavn";

    mysql_connect($host, $DBuser, $DBpass);
    mysql_select_db($DB);

er det alt der skal stå i filen? ikke noget med <?php og sådan
Avatar billede den-evil Nybegynder
31. marts 2006 - 13:22 #26
Jo,selvfølgelig...

<?
$host = "host.host.dk",
$DBuser = "brugernavn";
$DBpass = "password";
$DB = "databasenavn";

    mysql_connect($host, $DBuser, $DBpass);
    mysql_select_db($DB);
?>
Avatar billede amx_dk Nybegynder
31. marts 2006 - 13:30 #27
Jeg har brugt koden jakobdo skrev 30/03-2006 16:16:43 men det ser ud til at der er en fejl. da jeg får denne besked

Parse error: parse error, unexpected '{' in /var/www/www.xxxxxx/send.php on line 34
Avatar billede amx_dk Nybegynder
31. marts 2006 - 13:32 #28
jeg har dog også rettet lidt i den. så:
$query = mysql_query("SELECT navn,email FROM brugere WHERE noget = andet");
er rettet til:
$query = mysql_query("SELECT * FROM customers WHERE customers_newsletter = '1'") or die(mysql_error());
Avatar billede jakobdo Ekspert
31. marts 2006 - 13:38 #29
Hvad står der på linie 34?
Eller omkring?
Avatar billede amx_dk Nybegynder
31. marts 2006 - 13:39 #30
her er linie 30 til 41

$query  = mysql_query("SELECT * FROM customers WHERE customers_newsletter = '1'") or die(mysql_error());
    if(mysql_num_rows($query)>0)
    {
        while($row = mysql_fetch_assoc($query)
        {
            $mail->AddAddress($row['email'],$row['navn']);
            if(!$mail->Send())
            {
              echo "Message was not sent to: ".$row['email']."<p>";
              echo "Mailer Error: " . $mail->ErrorInfo;
              exit;
            }
Avatar billede jakobdo Ekspert
31. marts 2006 - 13:40 #31
Der mangler en ) i denne linie:

while($row = mysql_fetch_assoc($query) <-----
Det skal være:
while($row = mysql_fetch_assoc($query)) <---
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:00 #32
nu begynder det at se ud af noget.  jeg er utroligt glad for den hjælp jeg får her.  det er virkeligt noget der har plaget mig i 6 mdr.

jeg har dog lidt ekstra spørgsmål, hvis en af jer har tid til at hjælpe mig lidt mere med dette:

er det ikke muligt at sætte det html kode man gerne vil sende ind via php siden. altså i en slags tabel?
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:06 #33
Den må du nok lige forklare lidt nærmere, den forstod jeg ikke noget af! :o)
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:08 #34
jeg kan få det til at virke nu. dog kun med meget simpel html kodet email.

det jeg tænkte var:  på samme måde som man trykker på send knappen. kunne man så ikke have en tabel/textbox hvor man kunne skrive html koden der skal sendes?

forstå du hvad jeg mener?
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:10 #35
Jo, det kan du godt!
Så laver du en <textarea name="besked"> f.eks.
Og så kan du smide det kode derind, som skal sendes afsted.
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:14 #36
altså sådan her?
  $mail->Subject  =  "test af email";
    $mail->Body    =  "<textarea name="besked">";
    $mail->AltBody  =  "This is the text-only body";
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:18 #37
$mail->Body    =  $_POST['besked'];
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:22 #38
det ser ikke ud til at virke. der kommer ingen textare frem når man ser siden.  hvis jeg højre klikker for vis kilde får jeg dette:

<form action="/admin/send.php" method="post"><input type="submit" name="sendEmail" valye="Afsend emails"></form>
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:23 #39
Det er jo netop sådan en du skal tilføje...
<form action="/admin/send.php" method="post">
<textarea name="besked">HER SKRIVER DU EMAILEN...</textarea>
<input type="submit" name="sendEmail" valye="Afsend emails">
</form>
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:26 #40
du må undskylde jeg ikke er helt så skarp til dett :-( hvordan ser det ud i php siden

  $mail->Subject  =  "test af email";
    $mail->Body    =  $_POST['besked'];<textarea name="besked">HER SKRIVER DU EMAILEN...</textarea>   
$mail->AltBody  =  "This is the text-only body";
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:29 #41
ahhh har regnet det ud.
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:30 #42
Du laver:
$mail->Body    =  $_POST['besked'];

og:

echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<textarea name="besked">HER SKRIVER DU EMAILEN...</textarea>'; //TILFØJET...
echo '<input type="submit" name="sendEmail" valye="Afsend emails">';
echo '</form>';
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:32 #43
sorry, var lidt slow der.  jeg mangler faktisk kun to ting nu, så kan jeg selv bygge vidre.

1. emails skal sendes som bcc lige nu kan alle se hvem der har modtaget mailen. det duer ikke
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:40 #44
Inden du tilføjer en email med $mail->AddAddress($row['email'],$row['navn']);
Så kald:  $mail->ClearAddresses();
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:48 #45
yes det virker.

der er dog et problem.  jeg har svært ved lige at forklare det. men når jeg åbner den modtaget mail. så viser den html koden helt forkert.

hvis jeg så højre klikker for at se kilden. så ser den sådan her ud (udsnit):
der er en masse \\\\ backslash som ikke burde være der?
<TD><DIV style=\"DISPLAY: inline; FONT-SIZE: 12px; WIDTH: 100%\" align=left>
  <div align=\"right\"><span class=\"whitetext\">nyhedsbrev 09&nbsp;|&nbsp;30. Marts 2006 </span>
    <!-- ImageReady Slices (file_april.psd) -->
    <table id=\"Table_01\" width=\"610\" height=\"522\" border=\"0\" cellpadding=\"0\"
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:50 #46
Og du indsætter koden korrekt?
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:51 #47
den bliver copy pasted ind i textarea boksen
Avatar billede jakobdo Ekspert
31. marts 2006 - 14:52 #48
Har du \" på der?

Ellers prøv med:
$mail->Body    =  stripslashes($_POST['besked']);
Avatar billede amx_dk Nybegynder
31. marts 2006 - 14:58 #49
jublen vil ingen ende tage.  det virker! men hvorfor? jeg er nysgerrig, hvorfor skal der en stripslashes til?


og så er der jo lige den sidste ting nemlig spørgsmål 2.
hvis du er frisk?
Avatar billede jakobdo Ekspert
31. marts 2006 - 15:04 #50
Jeg tror måske din server har enabled magic_quotes.
Det er en sikkerhedsindstilling.

Hvad var spørgsmål 2?
Avatar billede amx_dk Nybegynder
31. marts 2006 - 15:10 #51
som det er nu, så henter den emailaddresser fra en tabel. men faktisk skal der sendes nyhedsmail ud til emailaddresser i to tabeller.  hvordan kan man det?
Avatar billede amx_dk Nybegynder
31. marts 2006 - 15:18 #52
jeg har pt denne stump kode:
$hent_emails1 = mysql_query("SELECT * FROM customers WHERE customers_newsletter = '1'") or die(mysql_error());

    print "Henter emails fra nr.1<br><br><br>";

while($vis_e1 = mysql_fetch_array($hent_emails1)) {
    print $vis_e1[customers_email_address]."<br>";
}

print "<br/><br/>";

$hent_emails2 = mysql_query("SELECT * FROM subscribers") or die (mysql_error());

    print "Henter emails fra nr.2<br><br><br>";

while($vis_e2 = mysql_fetch_array($hent_emails2)) {
    print $vis_e2[subscribers_email_address]."<br>";
}
Avatar billede jakobdo Ekspert
31. marts 2006 - 15:21 #53
Du kan enten trække emails ud fra begge tabeller med en union, eller lave det i 2 scripts.
Den første er nok den nemmeste, men det kan jeg desværre ikke hjælpe med nu.
Skal nemlig ud og er først på igen søndag aften.
Avatar billede jakobdo Ekspert
31. marts 2006 - 15:21 #54
Indtil videre takker jeg ihf for point.
Avatar billede amx_dk Nybegynder
31. marts 2006 - 15:22 #55
Helt i orden. mange mange tak for hjælpen.
Avatar billede amx_dk Nybegynder
02. april 2006 - 18:24 #56
Hvis du har lyst til at hjælpe med det sidste, så har jeg startet et nyt spørgsmål her:
http://www.eksperten.dk/spm/699666
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