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.