15. Send email

Du er her: StartIndholdsfortegnelse → Send email
Indhold

Indledning

Du kan give dine brugere en mulighed for at sende en email til dig, selvom de ikke lige har en aktiv email-adresse. Til dette kan du bruge en af PHP's indbyggede funktioner. Nemlig: email()

Syntaks

PHP's indbyggede emailfunktion skal bruge 3 parametre + evt en 4. valgfri. Funktionen ser således ud:

mail(modtager,emne,besked(, headers));

De ekstra headers kan være en eller flere af følgende:

From: (afsenderen af emailen)
Reply-to: (svar-til)
Cc: (kopi-til)
Bcc: (blind-kopi)

Eksempel 1

For bare at sende en enkelt email ser funktionen således ud:

mail("lars@vuckbh.dk", "Opgave 13", "Opgave 13 færdig");

Eksempel 2

For at sende en email, så modtageren også kan se hvem den kommer fra (og sat op på en lidt mere overskuelig måde):

mail(
"lars@vuckbh.dk", 
"Opgave 13", 
"Jeg har lagt opgave 13 ud på Fronter", 
"From: hans@kbhkoks.dk"
);

Eksempel 3

Selvfølgelig kan man også kombinere mail-funktionen med variabler. Det er her det bliver virkeligt fleksibelt. Det er også muligt at indsætte linieskift i selve beskeden med \r\n:

<?

$modtager = "larsdenanden@kbhvuc.dk"; 
$emne = "Så er bygningen færdig"; 
$besked = "Nu har vi den bygning færdig du har bestilt. ";
$besked .= "\r\nDu kan se den imorgen.";
$fra = "From: hansbygger@stenoggrus.dk";
$fra .= "\r\nReply-to: svar@stenoggrus.dk";

mail($modtager, $emne, $besked, $fra);

?>

Læg mærke til, hvordan man kan sammenlægge to tekst-strenge:
$besked = "Nu har... ...bestilt. "; bliver lagt sammen eller kombineret til en streng med kommandoen:
$besked .= "\r\nDu kan... ...imorgen.";.

Det er "konkat-operatoren" .= (punktum-lighedstegn). Denne bruges til at tilføje en streng (et stykke tekst) til en variable uden at slette indholdet i variablen.

Opret en email-funktion

Du skal nu til at oprette en email-funktion til brug på dine sider.

Du skal opret 2 sider:

Formular-siden

Denne side er en almindelig html-side.

  1. Opret en nu side med Standard-skabelonen
  2. Indsæt følgende formular med felter
    <form action="send.php" method="get">
    <input type="hidden" value="1" name="skjul">
    <input type="text" value="Modtager..." name="modtager"><br>
    <input type="text" value="Emne" name="emne"><br>
    <input type="text" value="Besked..." name="besked"><br>
    <input type="text" value="Afsender..." name="fra"><br>
    <input type="submit" value="Send">
    <input type="reset" value="Fortryd">
    </form>
    	
    Læg mærke til, at der er et skjult felt, som bliver sendt sammen med formularen. Det skal bruges til at checke om det er siden med formularen, der har sendt brugeren videre til send.php.
  3. Gem siden som emailform.htm i en ny mappe du opretter til formålet.

Siden, der sender emailen

Nu skal du oprette den side, der sender emailen:

  1. Opret en ny side med Standard-skabelonen.
    Indtast derefter følgende koder:
  2. <?
    if(!empty($_GET['skjul']))
    {
    $modtager = $_GET['modtager'];
    $emne = $_GET['emne'];
    $besked = $_GET['besked'];
    $fra = "From: " . $_GET['fra'];
    
    if(mail($modtager, $emne, $besked, $fra))
    {
    echo "Mail sendt til:" . $modtager;
    }
    else
    {
    echo "Kunne ikke sende mail. ";
    echo "Prøv igen: <a href=\"emailform.htm\">emailform.htm</a>";
    }
    }
    else
    {
    echo "Prøv igen: <a href=\"emailform.htm\">emailform.htm</a>";
    }
    ?>
    

    Funktionen mail sender koden true tilbage, hvis det er lykkedes at sende mailen og koden false, hvis det ikke er lykkedes at sende mailen.

    Derfor kan man checke med if(mail($modtager, $emne, $besked, $fra)).

  3. Gem siden som send.php
  4. Upload begge siderne til serveren og se, om det virker.

Øvelse 14.1

  1. Opret en ny side, som kan sende en email til 3 personer. (Brug det du har lært om lister (arrays), løkker (foreach) mm
  2. Send resultatet til din lærer