<< Tilbage

Send mails med php

Mail funktionen

I virkeligheden er der intet hokus pokus i måden hvorpå man sender mails. Det er, som altid med php, meget simpelt. Til formålet benytter vi funkionen mail(). Den er indrettet således:

mail("modtager","emne","besked","headers"

Et eksempel:

Kode:
1.
2.
3.
<?php
mail
("mod@modtager.dk","Her står et emne","Beskeden er her \n En linje mere","from:afs@afsender.dk");
?>

Se hvordan mailen ser ud. Simple mails er som det ses i eksemplet, ret ligetil. Bemærk at jeg bruger \n til at lave linjeskift. Det nytter i at bruge <br> i mailen da det er en tekstmail (læs evt. afsnittet om html-mails hvis en tekstmail ikke er tilstrækkelig).

HTML-mails

HTML-mails vil sige at man får mulighed for at bruge html koder i en mail, og på den måde indsætte billeder osv. I php benytter vi stadig mail() funktionen, med et par ekstra tilføjelser til header-parametret. Her er et eksempel på en html-mail:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?php
$modtager 
"webmaster@phpartikler.dk"//Hvem skal have mailen?
$emne "Et emnefelt"//Emnefeltet

$besked "<h1 style='background-color: #006699'>
            Dette er en html-mail
          </h1>"
;

$header  "MIME-Version: 1.0" "\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1" "\r\n";
$header .= "from:afs@afsender.dk";

mail($modtager$emne$besked$header); //Send!!
?>

Se mailen

Lav en formmailer

En tutorial samling er ikke komplet hvis der ikke er en til at bygge en form-mailer :-)

Første skridt er at få lavet selve html formen, som er den del dine brugere bliver præsenteret for. Vi nøjes med at have 2 felter: et navn-felt og et besked-felt. Her er koden til formularen (forklaring følger):

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
<form action="mail.php" method="post">
    Navn: <br>
    <input type="text" name="navn" style="width: 200px;"> <br><br>

    Besked: <br>
    <textarea name="besked" style="width: 200px; height: 100px;"></textarea> <br><br>

    <input type="submit" value="Send mail">
</form>
Resultat:
Navn:


Besked:


I linje 1 fortæller vi med html koder at her starter en formular. action attributen fortæller hvor (til hvilken side) formularen skal postes. Jeg har skrevet mail.php som er navnet på dette dokument (dvs. når man trykker "Send mail", så indlæser denne side også). Attributen method fortæller hvordan formen skal sendes.

I linje 3 indsættes et normalt tekstfelt, af typen text. Udover det giver den et navn, nemlig navn. Det er ret vigtigt for senere at kunne hive indholdet af tekstfeltet ud fra php. Det er altså en måde at indentificere feltet på.

I linje 6 indsættes et stort tekstfelt (et textarea). Vi tildeler feltet navnet besked af samme årsager som det forrige felt, nemlig for at kunne indentificere feltet fra php senere.

Linje 8 er bare en submit-knap, som sender formularen når man trykker på den.

Og så til den mere interessante del, nemlig php delen. Det første der skal ske i php-scriptet er vi skal tjekke om brugeren har udfyldt felterne (hvis ja, så afsender vi en mail). Vi tjekker på følgende måde:

Kode:
1.
2.
3.
4.
5.
6.
<?php
if (isset($_POST['navn']) && isset($_POST['besked'])) //Eksisterer variablerne så har brugeren sendt formen
{
    
//Ja, det har han...
}
?>

Læg mærke til variablen $_POST['navn'] Det er på denne måde man får fat i indholdet af det tekstfelt der hedder navn (læs evt. nogle af tutorials som forklarer hvordan man henter værdier ud af formularer). Læg også mærke til at jeg har brugt funktionen isset() som kontrollere om variablen eksisterer ($_POST['navn'] eksisterer kun når formularen sendes). Indholdet af variablen (det brugeren har skrevet i tekstfeltet) kan godt være tomt. Så det vi har skrevet betyder altså: hvis $_POST['navn'] og $_POST['besked'] eksisterer så må formen være sendt, gå videre!

Så næste vi gør er at udvide php koden, så den tjekker om brugeren har glemt at indtaste navn eller besked, så vi sikrer os at man ikke bare modtager tomme mails. Det gøres på følgende måde:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?php
if (isset($_POST['navn']) && isset($_POST['besked'])) //Eksisterer variablerne så har brugeren sendt formen
{
    
//Ja, det har han...
    //Tjek om felterne er tomme
    
if (empty($_POST['navn']))  //er navn tom?
    
{
        echo 
"Du skal indtaste dit navn"//skriv fejlmeddelelse
    
}
    elseif (empty(
$_POST['besked'])) //Hvis navn ikke er tomt, så tjek om besked er det
    
{
        echo 
"Du skal indtaste en besked"//Skriv fejlmeddelelse
    
}
    else 
//Ingen af felterne er tomme
    
{
        
//Gå igang med at sende mailen    
    
}
}
?>

Læg mærke til at jeg har brugt funktionen empty() til at tjekke om felterne er tomme.
Så mangler vi bare at få afsendt selve e-mailen, og det gøres på denne måde:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php
$modtager 
"mod@modtager.dk"//Hvem skal have mailen?
$emne "Mail fra en bruger"//Emnefeltet
$besked "Hej, du har modtaget mail fra en bruger: \n 
                    Navn: " 
$_POST['navn']. "\n
                    Besked: " 
$_POST['besked'];
$header "from:afs@afsender.dk"//Hvilken adresse skal der stå i afsenderfeltet?

mail($modtager$emne$besked$header); //Send!!
?>

Det burde være lige til at forstå. Jeg bruger \n til at fortage linjeskift.

Så er den færdig, den samlede kode ses herunder:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<?php
if (isset($_POST['navn']) && isset($_POST['besked']))
{
    if (empty(
$_POST['navn']))
    {
        echo 
"Du skal indtaste dit navn"
    }
    elseif (empty(
$_POST['besked']))
    {
        echo 
"Du skal indtaste en besked";
    }
    else
    {
        
$modtager "mod@modtager.dk";
        
$emne "Mail fra en bruger";
        
$besked "Hej, du har modtaget mail fra en bruger: \n 
                            Navn: " 
$_POST['navn']. "\n
                            Besked: " 
$_POST['besked'];
        
$header "from:afs@afsender.dk";

        
mail($modtager$emne$besked$header);
        echo 
"Emailen er nu sendt!";
    }
}
?>

<form action="mail.php" method="post">
    Navn: <br>
    <input type="text" name="navn" style="width: 200px;"> <br><br>

    Besked: <br>
    <textarea name="besked" style="width: 200px; height: 100px;"></textarea> <br><br>

    <input type="submit" value="Send mail">
</form>

Leder du efter billige usb stik?, så kan du få et Billigt USB stik hos usb.dk

Spørgsmål/forslag/kommentarer rettes til webmaster@phpartikler.dk

Billige USB stik