Avatar billede tza Nybegynder
23. februar 2006 - 19:54 Der er 22 kommentarer og
1 løsning

PHP Mail form, inkludere tekst/mail i header/subject??

Hej,
Jeg tillod mig at 'låne' koden her; http://www.eksperten.dk/spm/255524, og har modificeret den lidt;

<?
if($besked) {
mail("min@mail.dk ", "Tilmelding til nyhedsbrev", "
Navn: $navn
Besked: $besked
");
echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");

} elseif ($send) {
echo("Din besked blev ikke afsendt korrekt - prøv igen!");
}
?>

            <form action="index_mail.php" method="post">
              <font color="#660033" size="2" face="Franklin Gothic Medium">Mail:</font>
              <input type="text" name="navn">
              <font color="#660033" size="2" face="Franklin Gothic Medium">By:</font>
              <input type="text" name="besked" value="">
              <input type="submit" name="send" value="Send">
            </form>

Jeg vil gerne have den sat op sådan, at den mail brugeren skriver i formen kommer til at stå som afsender i min indbakke, så jeg kan svare hurtigt tilbage til mange..
Og, i subject-feltet i min indbakke, vil jeg gerne have at den by brugeren skriver står.
Med andre ord, så jeg hurtigt kan svare tilbage, indenfor geografisk afgrænsede områder.

Mange tak for hjælpen. - Pointene er højt sat fordi jeg er under tidspres, hehe..
Avatar billede tza Nybegynder
23. februar 2006 - 19:57 #1
- og, er det muligt at sørge for at;

echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");

- ikke står på siden hver gang man åbner den efter man først har sendt formen én gang??

Tak igen.
Avatar billede jakobdo Ekspert
23. februar 2006 - 20:11 #2
<?
if(!empty($_POST['besked']))
{
    if(mail($_POST['navn'], "Tilmelding til nyhedsbrev", "
    Navn: $navn
    Besked: $besked"))
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    else
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");

}
?>
<form action="index_mail.php" method="post">
    <font color="#660033" size="2" face="Franklin Gothic Medium">Mail:</font>
    <input type="text" name="navn">
    <font color="#660033" size="2" face="Franklin Gothic Medium">By:</font>
    <input type="text" name="besked" value="">
    <input type="submit" name="send" value="Send">
</form>
Avatar billede jakobdo Ekspert
23. februar 2006 - 20:12 #3
Dog synes jeg du mangler et email felt?
Og hvis du åbner siden igen, så burde den altid vise formen.
trykker du F5, efter du står på siden:
Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!
Så vil den sende email igen, og vise beskeden:
Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak! igen.
Avatar billede tza Nybegynder
23. februar 2006 - 20:21 #4
Jeg er ikke sikker på jeg ved hvad du mener med at jeg mangler et email felt??

if(!empty($_POST['besked']))
{
    if(mail($_POST['navn'], "Tilmelding til nyhedsbrev", "

- er det her jeg skal skrive den mail formen skal sendes til???
Avatar billede jakobdo Ekspert
23. februar 2006 - 20:24 #5
I din form, har du ikke "kun" navn og besked?
Hvis navn er det samme som email, så er alting jo ok.

Hvad hedder den side du har formen stående på?
Avatar billede tza Nybegynder
23. februar 2006 - 20:27 #6
Navn er det samme som email, ja.
siden med formen hedder index_mail.php

Til gengæld kan jeg ikke se hvor jeg skal sætte min egen mail, altså den der skal modtage formen??

Du er meget tæt på pointene her, 1000 tak for hjælpen!
Avatar billede jakobdo Ekspert
23. februar 2006 - 20:31 #7
Nu så jeg lige vu har navn som email...
Denne kode burde gøre det hele for dig:

<?php
//http://www.eksperten.dk/spm/690481
if(!empty($_POST['email']) && !empty($_POST['besked']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Navn: " . $navn . "\n";
    $message .= "Besked: " . $besked . "\n";
   
    if(mail("din@email.dk", $subject, $message, "From: $to\r\nReply-To: $to\r\nX-Mailer: PHP/" . phpversion()))
    {
        //Email er sendt ok
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else
    {
        //Email blev ikke sendt, der opstod en fejl...
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
}
?>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
    <font color="#660033" size="2" face="Franklin Gothic Medium">Mail:</font>
    <input type="text" name="email">
    <font color="#660033" size="2" face="Franklin Gothic Medium">Besked:</font>
    <textarea name="besked"></textarea>
    <input type="submit" name="send" value="Send">
</form>

Gem den som mailer.php og prøv at kør den!
Avatar billede jakobdo Ekspert
23. februar 2006 - 20:32 #8
Du skal så rette: din@email.dk til din email. :o)
Avatar billede tza Nybegynder
23. februar 2006 - 20:40 #9
Ok, det eneste jeg skal rette er altså min egen email??

Og så bliver den ikke ved med at sende formen hver gang man åbner siden/refresher??
Avatar billede jakobdo Ekspert
23. februar 2006 - 20:43 #10
Sådan, så skulle du kunne refreshe lige så tosset du vil...

<?php
//http://www.eksperten.dk/spm/690481
if(!empty($_POST['email']) && !empty($_POST['besked']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Navn: " . $navn . "\n";
    $message .= "Besked: " . $besked . "\n";
 
    if(mail("din@email.dk", $subject, $message, "From: $to\r\nReply-To: $to\r\nX-Mailer: PHP/" . phpversion()))
    {
        //Email er sendt ok
        header("Location: " . $_SERVER['PHP_SELF'] . "?status=1");
        exit();
    }
    else
    {
        //Email blev ikke sendt, der opstod en fejl...
        header("Location: " . $_SERVER['PHP_SELF'] . "?status=0");
        exit();
    }
}

if($_GET['status'] == 1)
{
    echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
}
elseif($_GET['status'] == 0)
{
    echo("Din besked blev ikke afsendt korrekt - prøv igen!");
}


?>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
    <font color="#660033" size="2" face="Franklin Gothic Medium">Mail:</font>
    <input type="text" name="email">
    <font color="#660033" size="2" face="Franklin Gothic Medium">Besked:</font>
    <textarea name="besked"></textarea>
    <input type="submit" name="send" value="Send">
</form>
Avatar billede tza Nybegynder
23. februar 2006 - 20:51 #11
Det ser lovende ud, men der et par problemer...

Brugerens email kommer ikke stå at stå som afsender, så jeg kan svare direkte tilbage, faktisk står den slet ikk nogen steder??

Og når først den er sendt, går den tilbage til siden, men uden formen??

Det gør det måske lidt lettere for dig her;
http://www.rundrejsen.dk/mailer.php
Avatar billede tza Nybegynder
23. februar 2006 - 20:53 #12
og nu, når jeg åbner siden igen, starter den med at skrive;

Din besked blev ikke afsendt korrekt - prøv igen!
Avatar billede jakobdo Ekspert
23. februar 2006 - 21:03 #13
Det er nok en smule overkill, men prøv denne:

<?php
//http://www.eksperten.dk/spm/690481
session_start();
if(!empty($_POST['email']) && !empty($_POST['besked']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Navn: " . $navn . "\n";
    $message .= "Besked: " . $besked . "\n";

    if(mail("din@email.dk", $subject, $message, "From: $to\r\nReply-To: $to\r\nX-Mailer: PHP/" . phpversion()))
    {
        //Email er sendt ok
        $_SESSION['sendt'] = 1;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
    else
    {
        //Email blev ikke sendt, der opstod en fejl...
        $_SESSION['sendt'] = 2;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
}

if(isset($_SESSION['sendt']))
{
    if($_SESSION['sendt'] == 1)
    {
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else
    {
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
    unset($_SESSION['sendt']);
}
else
{
    ?>
        <table>
            <form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
                <tr><td><font color="#660033" size="2" face="Franklin Gothic Medium">eM@il:</font></td><td><input type="text" name="email"></td></tr>
                <tr><td><font color="#660033" size="2" face="Franklin Gothic Medium">Besked:</font></td><td><textarea name="besked"></textarea></td></tr>
                <tr><td colspan="2"><input type="submit" name="send" value="Send"></td></tr>
            </form>
        </table>
    <?
}
?>
Avatar billede jakobdo Ekspert
23. februar 2006 - 21:05 #14
Jeg sidder og sover, her er den:

<?php
//http://www.eksperten.dk/spm/690481
session_start();
if(!empty($_POST['email']) && !empty($_POST['besked']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Email: " . $_POST['email'] . "\n";
    $message .= "Besked: " . $_POST['besked'] . "\n";

    if(mail("din@email.dk", $subject, $message, "From: $from\r\nReply-To: $from\r\nX-Mailer: PHP/" . phpversion()))
    {
        //Email er sendt ok
        $_SESSION['sendt'] = 1;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
    else
    {
        //Email blev ikke sendt, der opstod en fejl...
        $_SESSION['sendt'] = 2;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
}

if(isset($_SESSION['sendt']))
{
    if($_SESSION['sendt'] == 1)
    {
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else
    {
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
    unset($_SESSION['sendt']);
}
else
{
    ?>
        <table>
            <form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
                <tr><td><font color="#660033" size="2" face="Franklin Gothic Medium">eM@il:</font></td><td><input type="text" name="email"></td></tr>
                <tr><td><font color="#660033" size="2" face="Franklin Gothic Medium">Besked:</font></td><td><textarea name="besked"></textarea></td></tr>
                <tr><td colspan="2"><input type="submit" name="send" value="Send"></td></tr>
            </form>
        </table>
    <?
}
?>
Avatar billede tza Nybegynder
23. februar 2006 - 21:16 #15
Det er jo nærmest perfekt det dér!!

MEN, (hehe), er det mig der misforstår noget ang. siden koden skal ligge på??

Den side du ser og testede fra (mailer.php) skal jo gerne være startside, altså index.php. Hvordan griber jeg det an??

Mht brugerens mail i afsender-feltet i min indbakke, fungerer det perfekt, men jeg får stadig ikke teksten fra

<textarea name="besked"></textarea>

i subject-feltet i min indbakke??

Mange, 1000, tak for hjælpen.
Avatar billede jakobdo Ekspert
23. februar 2006 - 21:22 #16
Som koden er laver nu, kalde du bare kalde koden: index.php, det virker stadig.
Vil du have teksten fra besked som subject?
Nu har du jo subject: Tilmelding til nyhedsbrev
Hvis du vil, så retter du:
$subject  = "Tilmelding til nyhedsbrev";
til:
$subject  = $_POST['besked'];

Du skal dog så vide at du giver mulighed for at lave spam-udsendelse...
Du kan læse mere her:
http://dk2.php.net/manual/da/function.mail.php
F.eks. skal du tjekker om subject indeholder \n eller \r\n
Avatar billede tza Nybegynder
23. februar 2006 - 21:32 #17
Ok, hvordan skal det med spam forståes?? - Sådan at de mails jeg sender ud í fremtiden vil ses som spam hos brugeren eller??

Når jeg ændrer

$subject  = "Tilmelding til nyhedsbrev";
til:
$subject  = $_POST['besked'];

- ryger hele min opsætning??
Avatar billede tza Nybegynder
23. februar 2006 - 21:32 #18
Jeg arbejder i Dreamweaver, klassisk WYSIWYG...
Avatar billede tza Nybegynder
23. februar 2006 - 21:34 #19
Min kode ser nu præcis sådan ud;

<?php
//http://www.eksperten.dk/spm/690481
session_start();
if(!empty($_POST['email']) && !empty($_POST['besked']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Email: " . $_POST['email'] . "\n";
    $message .= "Besked: " . $_POST['besked'] . "\n";

    if(mail("cab@beskidtlyd.dk", $subject, $message, "From: $from\r\nReply-To: $from\r\nX-Mailer: PHP/" . phpversion()))
    {
        //Email er sendt ok
        $_SESSION['sendt'] = 1;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
    else
    {
        //Email blev ikke sendt, der opstod en fejl...
        $_SESSION['sendt'] = 2;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
}

if(isset($_SESSION['sendt']))
{
    if($_SESSION['sendt'] == 1)
    {
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else
    {
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
    unset($_SESSION['sendt']);
}
else
{
    ?>
            <table width="234">
              <td width="52"><form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
                <tr>
                  <td><font color="#660033" size="2" face="Franklin Gothic Medium">Mail:</font></td>
                  <td width="144"><input type="text" name="email"></td></tr>
                <td><font color="#660033" size="2" face="Franklin Gothic Medium">By:</font></td><td><input type="text" name="besked"></td>
                <td colspan="2"><input type="submit" name="send" value="Send"></td>
            <td width="196"></form>
        </table>
    <?
}
?>

er det mig der laver fejl siden jeg kan ikke ændre subject??
Avatar billede jakobdo Ekspert
23. februar 2006 - 21:55 #20
$subject  = $_POST['besked'];

Men du bør nok lave et input type="text" som laves til subject.
Avatar billede tza Nybegynder
15. marts 2006 - 01:27 #21
Hej jakob
Hvordan kan jeg give dig pointene????
Avatar billede jakobdo Ekspert
15. marts 2006 - 07:15 #22
Svar.
Avatar billede jakobdo Ekspert
29. marts 2006 - 12:53 #23
Takker for point!
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