Odesílání e-mailů pomocí PHPMaileru a SMTP
Pro bezpečné a spolehlivé odesílání e-mailů z vašeho webu doporučujeme používat knihovnu PHPMailer, která umožňuje přímé připojení k SMTP serveru (smtp.zoner.com
). Tím se obejde závislost na PHP funkci mail()
, která může být z bezpečnostních důvodů na hostingu zakázána.
Upozornění: PHPMailer není součástí webhostingu. Musíte si jej samostatně stáhnout a nahrát spolu s vaším webem na server.
1. Co budete potřebovat
- Webhosting s PHP
- Vytvořený e-mail (např.
info@vasedomena.cz
) - Knihovnu PHPMailer (viz níže)
2. Stažení PHPMaileru
Stáhněte si aktuální verzi knihovny z oficiálního repozitáře: https://github.com/PHPMailer/PHPMailer
Příklady použití knihovny PHPMailer najdete na adrese https://github.com/PHPMailer/PHPMailer/tree/master/examples
Po stažení ZIP souboru rozbalte archiv a nahrajte složku src/
na server (např. do složky mailer/
).
3. Ukázkový skript pro odeslání e-mailu
Níže uvedený kód použijte na svém webu. Nezapomeňte upravit přihlašovací údaje k vaší e-mailové schránce.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'mailer/PHPMailer.php'; require 'mailer/SMTP.php';
require 'mailer/Exception.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.zoner.com';
$mail->SMTPAuth = true;
$mail->Username = 'info@vasedomena.cz'; // vaše e-mailová adresa
$mail->Password = 'VaseEmailoveHeslo'; // heslo ke schránce
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('info@vasedomena.cz', 'Webový formulář');
$mail->addAddress('prijemce@nekde.cz', 'Příjemce');
$mail->isHTML(true);
$mail->Subject = 'Testovací zpráva';
$mail->Body = 'Toto je <strong>testovací e-mail</strong> odeslaný přes SMTP.';
$mail->AltBody = 'Toto je testovací e-mail odeslaný přes SMTP.';
$mail->send();
echo 'Zpráva byla úspěšně odeslána.';
} catch (Exception $e) {
echo 'Chyba při odesílání: ' . $mail->ErrorInfo;
}
?>
4. SMTP nastavení
- SMTP server: smtp.zoner.com
- Port: 587
- Šifrování: STARTTLS
- Uživatel: vaše e-mailová adresa
- Heslo: heslo ke schránce
5. Často kladené dotazy
- Musím PHPMailer instalovat?
Ano. PHPMailer je externí knihovna a není součástí vašeho hostingu. Viz bod 2 výše. - Co když SMTP připojení selhává?pro diakgnostiku použijte funkci:
zdroj: https://github.com/PHPMailer/PHPMailer/blob/master/examples/ssl_options.phps$mail->SMTPDebug = SMTP::DEBUG_CONNECTION;
- Funguje to i bez
mail()
funkce?
Ano, protože PHPMailer odesílá zprávy přes přímé připojení k SMTP serveru.