Odeslání e-mailu v PHP

V tomto článku si ukážeme, jak jednoduše vytvořit kontaktní formulář, který odešle informace přímo na váš mail.


Nejprve si vytvoříme HTML soubor, který bude obsahovat webový formulář a posléze vytvoříme samotný soubor s PHP skriptem.

HTML soubor formuláře bude vypadat následovně:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
 
   <title>Odesílání emailu</title>
 
 
   <h1>Kontaktní formulář</h1>
<form action="poslat.php" method="post">
   <br>
   <br>
   <textarea name="zprava" rows="60" cols="55"></textarea><br>
 
   </form>

Nejdůležitější část kodu je vyznačena červeně. Jedná se o formulář, který po kliknutí na tlačítko Odeslat předá informace souboru s PHP skriptem, který je v tomto případě pojmenován poslat.php. Pojdme se nyní podívat na tento kód důkladněji.

1
<form action="poslat.php" method="post"></form>

Tento řádek obsahuje element FORM, který značí začátek formuláře. Atribut ACTION určuje, kterému souboru budou data předány a atribut METHOD jakým způsobem budou odeslána. Pokud nastavíme metodu GET, bodou hodnoty formuláře předány skriptu v URL adrese. Metoda POST se používá pro přenášení větších dat. Obě dvě metody jsou funkčně stejné, liší se pouze způsobem, kterým dojde k přesunu dat. Pro větší bezpečnost je lepší používat metodu POST.

1
2
3
<br>
<br>
<textarea name="zprava" rows="60" cols="55"></textarea><br>

Máme zde dva texboxy (INPUT TYPE=“TEXT“) pojmenované (NAME) mail a predmet. Je nutné, aby každý prvek formuláře měl své jméno. Atribut SIZE určuje velikost prvku a atribut VALUE=““ stanoví, jaký text bude při zobrazení formuláře na prvku umístěn. Dále zde je textové pole TEXTAREA pojmenované NAME=“zpráva“. Atributy ROWS=““ a COLS=““ značí počet řádků a znaků.

Tlačítko Odeslat slouží k předání hodnot z formuláře skriptu, který je dále zpracuje. Atrubut TYPE=“SUBMIT“ nám definuje, že se jedná o odesílací tlačítko. Atrubut VALUE=““ nám stanoví, jaký text bude na tlačítku umístěn.

Samotný PHP skript

PHP skript máme umístěn v souboru poslat.php.

1
2
3
4
5
6
7
8
9
10
11
12
&lt;?php
$predmet = $_POST[&#039;predmet&#039;];
$email = $_POST[&#039;mail&#039;];
$zprava = $_POST[&#039;zprava&#039;];

if ($predmet!=&quot;&quot; and $email!=&quot;&quot; and $zprava!=&quot;&quot;)
{        
Mail(&quot;xyz@xyz.com&quot;, $predmet, $zprava, &quot;From: &quot; . $email);  
echo &quot;<p><strong>Vše OK.</strong>.</p>";
}
else echo "<p>Selhalo...</p>";
?&gt;
1
2
3
$predmet = $_POST['predmet'];
$email = $_POST['mail'];
$zprava = $_POST['zprava'];

Zde probíhá předávání hodnot z formuláře do proměnných ve skriptu.

1
2
3
4
5
6
if ($predmet!="" and $email!="" and $zprava!="")
{        
Mail("xyz@xyz.com", $predmet, $zprava, "From: " . $email);  
echo "<p><strong>Vše OK.</strong>.</p>";
}
else echo "<p>Selhalo...</p>";

Základem samotného odesílání mailu je podmínka, že zpráva se odešle pouze v případě, že jsme vyplnili všechna pole ve formuláři. Pokud je vše v pořádku, dojde k zavolání funkce Mail() která slouží k samotnému odeslání a vypíše se text „Vše OK“.

1
Mail(string to, string subject, string message, string headers);

Parametr to je emailová adresa příjemce, která je ve tvaru xyz@xyz.com. Pokud zadáváme více adres příjemců, oddělíme je mezi sebou čárkami. Parametr subject určuje, s jakým předmětem bude zpráva odeslána. Parametr message je obsah odesílané zprávy. Posledním parametrem je headers. O funkci Mail() si více můžete přečíst zde (click).

Pokud jsme něco nevyplnili, na obrazovku se vypíše text Selhalo…

Pro úspěšné fungování skriptu je nutné, aby na hostingu byla povolena funkce Mail().

O Martin Pitřík

Zajímám se o jazyk C, C++ a C#. V současné době stojím za vznikem projektu ElMetr, který si klade za cíl vytvořit program pro elektroniku zcela zdarma.