Avatar billede artico Novice
03. august 2011 - 14:14 Der er 19 kommentarer og
1 løsning

Vise email fra Header i bodyén

Hei, jeg har en nyheds script, der udsender nyhedsbreve med
(mail($to, $subject, $message, $headers))

Hvordan kan jeg bruge og vise en email adresse fra headeren (to) nede i selve bodyen på emailen?
Avatar billede majbom Novice
03. august 2011 - 14:24 #1
du kan vel bare bruge $to-variablen, når du genererer $message-strengen?
Avatar billede majbom Novice
03. august 2011 - 14:25 #2
$message = "Hej Lone, din email er: " . $to;


fx
Avatar billede artico Novice
03. august 2011 - 14:30 #3
OK, det har jeg bokset med i timevis og kanikke få den til det, den udvider hele tiden variablen $to hvis der er flere adresser der skal sendes til.. så jeg kan sku ikke finde ud af hvor jeg henter den ??
Jeg har som du kan se også forsøgt at sætte en session, men ikke med held..

Det må være i dette stykke kode den skal sættes ind, fordi selve $message variablen er sat tidligere ?

    //Har vi nogle modtagere ?
    if(mysql_num_rows($query)>0){
     
        echo '<h5>Påbegynder afsendelse af nyhedsbrev</h5>';
        echo 'Hvis ikke du ser teksten: <b>Alle emails er afsendt ok</b>, længere nede, så skal du sende igen<br />';
        while($row = mysql_fetch_assoc($query)){
   
 
            echo 'Forbereder afsendelse til: <b>' . $row['email'] . '</b> - STATUS : ';
            //Vi laver ekstra tjek, om de har modtaget nyhedsbrevet før.
            $sub_query = mysql_query("SELECT sent FROM mass_email WHERE bruger_id = ".$row['brugere_id']." AND nyheds_id = ".$nyhedsmail." AND sent = 1 LIMIT 1;");
            //Har de modtaget før ?
            if(mysql_num_rows($sub_query)==1){
                //Modtageren har modtaget nyhedsbrevet før, stop her.
                echo '<b>modtaget tidligere</b><br />';
            }else{
       
         
                //Modtageren har ikke modtaget nyhedsbrevet, fortsæt.
                $to      = $row['email'];
                $subject = $_POST['overskrift'];
                  $message = $output;
               
                // To send HTML mail, the Content-type header must be set
                $headers  = 'MIME-Version: 1.0' . "\r\n";
                $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
               
                // Additional headers
                $headers .= 'To: ' . $to . "\r\n";
               
                $headers .= 'From: ' . $ADMIN_generelt['nyhedsbrev_titel'] . $ADMIN_generelt['sitemail'] . "\r\n";
          /*   
          echo "<pre>";
          print_r($to);
          echo "</pre>";
          exit();
          */    //$_SESSION['kundemail'] = $to;
         
       
                //Afsendes email ok, opdateres tabellen med sent = 1
                if(mail($to, $subject, $message, $headers)){
               
                    mysql_query("INSERT INTO mass_email (bruger_id,nyheds_id,sent)VALUES(".$row['brugere_id'].",".$nyhedsmail.",1) ON DUPLICATE KEY UPDATE sent = 1");
                    echo '<b>email afsendt</b><br />';
                 
                //Afsendes email ikke ok, opdateres tabellen med sent = 0
                }else{
                    mysql_query("INSERT INTO mass_email (bruger_id,nyheds_id,sent)VALUES(".$row['brugere_id'].",".$nyhedsmail.",1) ON DUPLICATE KEY UPDATE sent = 0");
                    echo '<b>email ikke afsendt</b><br />';
                }
                //unset($_SESSION['kundemail']);
            }
           
        }
        unset($_SESSION['kundemail']);
        echo '<b>Alle email er afsendt ok</b><br />';
       
       
    }
Avatar billede majbom Novice
03. august 2011 - 14:58 #4
hvor kommer $output fra? det er jo der den skal ind?
Avatar billede artico Novice
03. august 2011 - 15:03 #5
Jeps  $output bliver kørt inden ovenstående.. det er der problemos ligger og jeg kan ikke lige se hvad jeg gøre?
Avatar billede artico Novice
03. august 2011 - 15:04 #6
Jeg vil gerne poste hele koden hvis det kan hjælpe?
Avatar billede majbom Novice
03. august 2011 - 15:38 #7
enten skal du generere $output hvor du har mulighed for at smide $to ind, eller skal du skrive noget i $output som du er sikker på ikke kan forekomme i teksten ellers, som du så senere replacer/udskifter med $to.

det kunne være

![EMAIL]!

fx.

hvor du så senere kan:

$output = str_replace("![EMAIL]!", $to, $output);
Avatar billede artico Novice
03. august 2011 - 15:59 #8
Oki, men kan ikke lige forstå hvor jeg skal sætte ![EMAIL]! ind?

1.Først hentes indhold til nyhedsmailen:

$output .= "<br>";
$output .= "<br>"; bla,bla...

2.Så findes modtageren frem og det er først her emailen er tilgængelig:

mysql: bla, bla

3.og så samles tingene

$to      = $row['email'];
$subject = $_POST['overskrift'];
$message  = $output;

4.Og så sendes mailen afsted
(mail($to, $subject, $message, $headers))

?
Avatar billede majbom Novice
03. august 2011 - 16:13 #9
![EMAIL]! skal sættes ind i dit punkt 1

og inden denne linje:

$message  = $output;

skal du køre str_replace-funktionen
Avatar billede artico Novice
03. august 2011 - 16:28 #10
:-) Hvis der f.eks er 3 modtagere(med forskellige emails) så er det samme email der kommer med til dem alle :-(
Avatar billede webweaver Praktikant
03. august 2011 - 16:45 #11
Burde det ikke være, eftersom du skal køre din str_replace inde while løkken og der dermed vil være en forskellig mail hver gang.
Avatar billede majbom Novice
03. august 2011 - 16:50 #12
præcis som væveren siger :)
Avatar billede majbom Novice
03. august 2011 - 16:50 #13
du får jo også 3 forskellige mails i din mail()-funktion ;)
Avatar billede artico Novice
03. august 2011 - 16:57 #14
Jameeeeenn det er altså den samme mail der bliver vist,men modtager mailen i mail header er forskellig?

// Her er hele koden, som starter med et DB udtræk af nyhedsmailen...

  if($row = mysql_fetch_array($result_nyhed))
{
   
$output .= "<head>\n";
$output .= "    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n";
$output .=     "    <link rel='stylesheet' href='".$ADMIN_generelt['hp']."/css/style_udskrifter.css' type='text/css'>\n";
$output .= "</head>\n";
$output .= "<body topmargin=\"0\" bgcolor=\"#EEEEEE\">\n";
// Indholdstester her
$output .= "<table bgcolor=\"#FFFFFF\" width='500' border=\"1\" bordercolor=\"#cccccc\" cellspacing=\"0\" cellpadding=\"4\" style=\"border-collapse: collapse\" >";
$output .= "                        <tr>\n";
$output .= "                        <td>\n";
$output .= $row['nyhed'];

$output .= "<hr>";
$output .= "<br>";
$output .= "<div align='center' class='footer'>";
$output .=  $row['nyhedsbrev_footer'];
$output .= "</div>";

$output .= "<br>";
$output .= "<hr>";
$output .= "<br>";
$output .= "<br>";
$output .= "<br>";   
$output .= "![EMAIL]!";
$output .= "<br>";
$output .= "<hr>";
$output .= "<br>";
$output .= "<div align='center'>";
$output .=    " <img src='".$ADMIN_firma['logo'].$row['firmalogo']."' border='0' alt='' />\n";
$output .= "<br>";
$output .= "<a href='".$ADMIN_generelt['hp']."' target='_blank'>".$ADMIN_generelt['titelnavn']."</a>\n";
$output .= "<br>";
$output .= $row['firmanavn'];
$output .= "&nbsp;|&nbsp;";
$output .= $row['adresse'];
$output .= "&nbsp;|&nbsp;";
$output .= $row['postnr'];
$output .= "&nbsp;|&nbsp;";
$output .= $row['postby'];
$output .= "&nbsp;|&nbsp;";
$output .= $row['telefon'];
$output .= "</div>";
$output .= "</td>\n";
$output .= "                        </tr>\n";
$output .= "</table>\n";
}

$output .= "    </body>\n";
$output .= "</html>\n";
 
//Vi tjekker vi har et nummer som brugertype og nyhedsmail 
if(isset($_POST['brugertyper']) && is_numeric($_POST['brugertyper']) && $_POST['brugertyper'] > 0 && isset($_POST['nyhedsmail_id']) &&
is_numeric($_POST['nyhedsmail_id']) && $_POST['nyhedsmail_id'] > 0){
    $brugertype = intval($_POST['brugertyper']);
    $nyhedsmail = intval($_POST['nyhedsmail_id']);
   
    //Vi finder alle vores brugere som er interesseret i at modtage nyhedsbreve.
    $query = mysql_query("SELECT brugere_id,email FROM brugere WHERE modtage_reklame_mail = 'ja' AND brugertype = ".$_POST['brugertyper'].";");
   
    //Har vi nogle modtagere ?
    if(mysql_num_rows($query)>0){
     
        echo '<h5>Påbegynder afsendelse af nyhedsbrev</h5>';
        echo 'Hvis ikke du ser teksten: <b>Alle emails er afsendt ok</b>, længere nede, så skal du sende igen<br />';
        while($row = mysql_fetch_assoc($query)){
   
            echo 'Forbereder afsendelse til: <b>' . $row['email'] . '</b> - STATUS : ';
            //Vi laver ekstra tjek, om de har modtaget nyhedsbrevet før.
            $sub_query = mysql_query("SELECT sent FROM mass_email WHERE bruger_id = ".$row['brugere_id']." AND nyheds_id = ".$nyhedsmail." AND sent = 1 LIMIT 1;");
            //Har de modtaget før ?
            if(mysql_num_rows($sub_query)==1){
                //Modtageren har modtaget nyhedsbrevet før, stop her.
                echo '<b>modtaget tidligere</b><br />';
            }else{
                //Modtageren har ikke modtaget nyhedsbrevet, fortsæt.
                $to      = $row['email'];
                $subject = $_POST['overskrift'];
                $output = str_replace("![EMAIL]!", $to, $output);
                $message  = $output;
           
                // To send HTML mail, the Content-type header must be set
                $headers  = 'MIME-Version: 1.0' . "\r\n";
                $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
               
                // Additional headers
                $headers .= 'To: ' . $to . "\r\n";
                $headers .= 'From: ' . $ADMIN_generelt['nyhedsbrev_titel'] . $ADMIN_generelt['sitemail'] . "\r\n";
         
                  //Afsendes email ok, opdateres tabellen med sent = 1
                if(mail($to, $subject, $message, $headers)){
               
                    mysql_query("INSERT INTO mass_email (bruger_id,nyheds_id,sent)VALUES(".$row['brugere_id'].",".$nyhedsmail.",1) ON DUPLICATE KEY UPDATE sent = 1");
                    echo '<b>email afsendt</b><br />';
                 
                //Afsendes email ikke ok, opdateres tabellen med sent = 0
                }else{
                    mysql_query("INSERT INTO mass_email (bruger_id,nyheds_id,sent)VALUES(".$row['brugere_id'].",".$nyhedsmail.",1) ON DUPLICATE KEY UPDATE sent = 0");
                    echo '<b>email ikke afsendt</b><br />';
                }
               
            }
           
        }
        echo '<b>Alle email er afsendt ok</b><br />';
       
       
    }else{
        echo 'Fejl: Der er ingen modtagere<br />';
    }
}else{
    echo 'Fejl: Forkert angivet brugertype og/eller nyhedsmail<br />';
}
Avatar billede majbom Novice
03. august 2011 - 18:53 #15
så det virker som om at $output = str_replace("![EMAIL]!", $to, $output); kun bliver kørt i det første gennemløb af din while?

det lyder sq mystisk!
Avatar billede artico Novice
03. august 2011 - 19:46 #16
Jeps, og aligevel sendes mailene ud til alle modtagere, dog bare med samme email i !EMAIL! men den rigtige i mailens header?
Avatar billede majbom Novice
03. august 2011 - 20:01 #17
første gang bliver ![EMAIL]! erstattet af en mailadresse - ergo er der ikke nogen forekomst af ![EMAIL]! de efterfølgende gange.

lav

$output = str_replace("![EMAIL]!", $to, $output);
$message  = $output;


om til:

$message = str_replace("![EMAIL]!", $to, $output);


så spiller det
Avatar billede artico Novice
03. august 2011 - 21:13 #18
JA FOR SAT....... Nu spiller klaveret, mange tak for hjælpen, send et svar!
Avatar billede majbom Novice
04. august 2011 - 06:47 #19
selv tak :)
Avatar billede majbom Novice
04. august 2011 - 12:19 #20
tfp
:)
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