Pro odesílání zpráv na email (např. pro kontaktní formuláře) existuje mnoho způsobů. V PHP můžeme využít např. funkci mail nebo mb_send_mail. Rozdíl mezi funkcemi mail a mb_send_mail:
- mail je pro jednobajtové znakové sady (např. iso nebo ascii)
- mb_send_mail je pro vícebajtové znakové sady, jako je utf-8
Tzn. že se nejčastěji používá funkce mb_send_mail. Tato funkce vyžaduje, aby byla na webhostingu povolena. Např. na Endoře.cz u free tarifu je zakázána. Pak je potřeba použít variantu s použitím SMTP protokolu. Příklad použití funkce mb_send_mail:
<?php
mb_internal_encoding("UTF-8");
$hlaska = '';
if (isset($_GET['uspech']))
echo 'Email byl úspěšně odeslán, brzy vám odpovíme.';
if ($_POST) // V poli _POST něco je, odeslal se formulář
{
if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
isset($_POST['email']) && $_POST['email'] &&
isset($_POST['zprava']) && $_POST['zprava'] &&
isset($_POST['rok']) && $_POST['rok'] == date('Y'))
{
$hlavicka = 'From:' . $_POST['email'];
$hlavicka .= "\nMIME-Version: 1.0\n";
$hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
$adresa = 'adresa[zavináč]domena.cz';
$predmet = 'Nová zpráva z mailformu';
$zprava = 'Od: '.$_POST['jmeno']. '<br>Text zprávy: '.$_POST['zprava'];
$uspech = mb_send_mail($adresa, $predmet, $zprava, $hlavicka);
if ($uspech)
{
header('Location: kontakt.php?uspech=ano');
exit;
}
else
$hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
}
else
$hlaska = 'Formulář není správně vyplněný!';
}
?>
<h2>Můžete nás kontaktovat pomocí formuláře níže.</h2>
<?php
if ($hlaska)
echo('<p>' . htmlspecialchars($hlaska) . '</p>');
$jmeno = (isset($_POST['jmeno'])) ? $_POST['jmeno'] : '';
$email = (isset($_POST['email'])) ? $_POST['email'] : '';
$zprava = (isset($_POST['zprava'])) ? $_POST['zprava'] : '';
?>
<form method="POST">
<table>
<tr>
<td>Vaše jméno</td>
<td><input name="jmeno" type="text" value="<?= htmlspecialchars($jmeno) ?>"/></td>
</tr>
<tr>
<td>Váš email</td>
<td><input name="email" type="email" value="<?= htmlspecialchars($email) ?>"/></td>
</tr>
<tr>
<td>Aktuální rok</td>
<td><input name="rok" type="number" /></td>
</tr>
<tr>
<td>Zpráva</td>
<td><textarea name="zprava"><?= htmlspecialchars($zprava) ?></textarea></td>
</tr>
</table>
<input type="submit" value="Odeslat" />
</form>
Hotový formulář si můžete vyzkoušet.