Nastavit správné odesílání e-mailových zpráv z webové stránky dnes není tak jednoduché, jak by se mohlo zdát. Kvůli přísnějším pravidlům a boji proti spamu už nestačí zprávu jen odeslat. Je třeba splnit řadu podmínek, aby sdělení dorazilo do inboxu. Zajímá vás, jak úspěšně doručovat e-maily posílané z webu? Přečtěte si náš článek, kde rozebereme 8 nejčastějších chyb, které snižují doručitelnost, a ukážeme si, co a jak nastavit, aby vaše zprávy nekončily ve spamu.
1) Neodesílejte zprávy přímo z webového serveru
Zdánlivě jednoduchou volbou je v případě PHP hostingu použití funkce mail(). V praxi ale naráží na řadu omezení a někdy není její použití ani povolené. Jestli se chcete vyhnout padání e‑mailů do spamu, musíte do zpráv ručně přidat další hlavičky a nastavit správné kódování.
Některé problémy zvládne vyřešit nástavba mb_send_mail(). Magicky přidává další potřebné hlavičky a částečně si poradí i s kódováním. Na potíže s ověřením odesílatele ale nestačí. Do SPF záznamu domény proto musíte přidat webový server a DKIM klíče, kterými se zprávy podepisují (pokud to dané prostředí vůbec umožňuje).Pro aplikaci na vlastním serveru může být tento způsob nejjednodušší cestou, ale na sdíleném hostingu je takové nastavení velmi krkolomné.
2) Používejte SMTP server pro vaší doménu
Výše popsané trable mají poměrně jednoduché řešení. Místo odesílání zpráv přímo z webového serveru využijte ve své aplikaci SMTP server, který běžně k doméně používáte. Nastavení zůstává stejné jako v e‑mailovém klientovi a odpadne tím celé martyrium se správným ověřením webového serveru pro odesílání.
Do svého PHP kódu odesílání jednoduše doplníte např. pomocí knihovny PHPMailer. Jak ji nastavit, vám ukážu dále v článku.
💡 Staráme se o víc než 150 serverů. O ten váš se postaráme taky.
- Hlídáme bezpečnost, aktualizujeme systém i OS, řešíme každodenní provoz.
- Díky vylazenému monitoringu podchytíme problémy dřív, než se vás stihnou dotknout.
- Vyřešíme vám nejen údržbu, ale i optimalizace a škálování.
Ozvěte se →
3) Mějte přehled o tom, co posíláte
Nejčastěji se webové e‑maily posílají z kontaktních formulářů. Pro ty platí jednoduché pravidlo:
Když je formulář vystavený na internetu, dřív nebo později ho začne zneužívat robot k rozesílání spamu.
Je přitom úplně jedno, jak dobrou ochranu máte. Jestli formulář zvládne vyplnit člověk, pro robota je prolomení jen otázkou času.
Pokud z takového formuláře posíláte zprávy jen na svou e‑mailovou adresu, tak se v případě prolomení ochrany nic zásadního neděje. Jestli však tazateli na právě vyplněný e‑mail posíláte potvrzení, robot získá ultimativní nástroj na spamování a je třeba okamžitě jednat.
Zprávy z formulářů proto posílejte (např. ve skryté kopii) i na vlastní adresu, ať máte přehled o všem, co se z webu odesílá. Určitě si u ní nastavte antispamovou výjimku, jinak se vůbec nemusíte dozvědět, že vaše stránky začaly posílat nevyžádanou poštu.
Posílání zpráv sobě do skryté kopie je výhodné i tehdy, když vám na zprávu někdo odpoví. Zprávy se ve vašem poštovním klientu spárují a vy získáte lepší přehled, o tom, co se děje.
Dále doporučujeme zprávy před odesláním na webu ukládat (například do jeho databáze). Zjednodušíte si tím řešení případů, když e‑mail příjemci nedorazí a vy budete muset řešit proč. Navíc budete mít na jednom místě přehled o tom, co a kam web rozesílá.
4) Do odesílatele uvádějte funkční adresu
Při sestavování e‑mailu hraje zásadní roli adresa odesílatele. Nezapomeňte ji nastavit, jinak vám do ní webový server může vyplnit například www-data@brain.igloonet.cz. A to je problém. Doméně brain.igloonet.czchybí MX záznam. Poštovní server příjemce tedy jednoduše pozná, že taková adresa odesílatele nemůže existovat, a zprávu označí jako spam.
Antispam ověřuje, zda je e-mailová adresa odesílatele funkční a je možné případně na ni doručit zprávu. Pokud budete odesílat z nefunkční adresy, tak dostanete od antispamu postih.
Další špatnou praxí je používání e‑mailových adres, na které není možné odpovědět (viz různé varianty noreply@). Příjemce jakékoliv zprávy by měl mít vždy možnost jednoduše reagovat pomocí tlačítka „odpovědět”. noreply@v podstatě říká, že vám na uživateli nezáleží. A nejen to – pokud dojde k nějaké chybě v rozesílce nebo někomu omylem pošlete cizí data, příjemce vás obvykle na omyl upozorní. Ovšem když nemá jak, v lepším případě vás bude ignorovat, v horším to půjde řešit na sociální sítě.
Do odesílatele proto vkládejte adresu, na kterou lze bez problémů odpovědět. Nejlépe takovou, kterou máte veřejně vystavenou na webu. Zpráva tak bude působit mnohem důvěryhodněji.
5) Nepoužívejte k odesílání běžný účet
Mezi lidmi je bohužel stále rozšířený mýtus, že když chceme do odesílatele uvést třeba podpora@igloonet.hosting, musíme použít poštovní účet se stejným uživatelským jménem. E‑mail ale takto nefunguje.
Z bezpečnostních důvodů nikdy nepoužívejte pro odesílání z webu běžné e‑mailové schránky, které slouží pro příchozí poštu. Proč? Do webové aplikace totiž musíte uložit přihlašovací údaje ke schránce včetně hesla v čitelné podobě. K nim má automaticky přístup každý, kdo se dostane k nastavení webu. Pokud vám tedy web nedejbože někdo napadne, získá přístup ke všem e-mailům a může za vás velmi snadno vystupovat.
K odesílání e‑mailů z webu si proto vytvořte samostatnou schránku. Tu nepoužívejte k ničemu jinému a nikde ji nezveřejňujte. Například si vytvořím ucet-pro-web@igloonet.hosting, který používám jen pro přihlášení k SMTP serveru. Jako odesílatele ale uvádím jinou adresu, například podpora@igloonet.hosting. V kódu webu tak budou jen přihlašovací údaje k prázdné schránce ucet-pro-web@igloonet.hostinga případný útočník se k žádným citlivým údajům nedostane.
6) Co web, to jiný SMTP účet
Pokud máte na starost více webů, tak každému vytvořte jiný SMTP účet pro odesílání. Sice se to zpočátku může zdát jako zbytečná komplikace, ale tato investice se vám mnohonásobně vrátí při řešení problémů.
V první řadě budete mít díky rozdělení mnohem lepší přehled, odkud se co odesílá. Hlavní výhoda se projeví ve chvíli, kdy dojde k zablokování účtu. Pokud se na webu něco pokazí a začne rozesílat spam, poskytovatel e-mailů vám ihned SMTP účet zablokuje.
Pokud účty mezi weby rozdělíte, bude mít zablokování jednoho účtu vliv vždy jen na ten konkrétní, který rozesílá spam. Budete také okamžitě vědět, na kterém webu vznikl problém.
7) Neodesílejte z webu hromadné rozesílky
Nikdy za žádných okolností neposílejte přes své webové stránky hromadné zprávy, například newslettery. Běžné mailhostingy počítají se standardním, většinou bilaterálním provozem v řádu desítek zpráv denně.
Odesílání hromadných zpráv má svá specifika a vyžaduje správné nastavení, aby dobře fungovalo. Nejlepší je použít specializovaný nástroj, který si necháte nastavit od mailingového specialisty. Ten vám zajistí správu kontaktů od jejich legálního získání až po zpracování nedoručenek.
Pokud posíláte hromadné zprávy přes službu, která k tomu není určená, riskujete, že se jednoduše dostanete do křížku nejen s jejím poskytovatelem, ale i se zákonem. Z webu posílejte přes SMTP jen transakční e-maily. Patří mezi ně například zprávy z kontaktního formuláře nebo odkaz na reset hesla.
8) Odesílání pravidelně kontrolujte
Na závěr doporučujeme všechno pečlivě a pravidelně kontrolovat. Nejjednodušší je poslat si z webu zprávu a sledovat, jestli v pořádku dorazí. Pro důkladnou kontrolu využijete výborný nástroj mail-tester.com. Vygeneruje vám e‑mailovou adresu, na kterou pošlete zkušební zprávu a vy obratem získáte podrobný přehled výsledků a případných chyb.
Tuto kontrolu opakujete minimálně jednou za půl roku. Vždycky je lepší odhalit problém dříve, než na něj upozorní uživatelé.
Ukázka nastavení pro knihovnu PHPMailer
Pro lepší pochopení si ukážeme nastavení knihovny PHPMailer pro odesílání z PHP aplikace.
Jde o suverénně nejpoužívanější knihovnu řešící odesílání e-mailů na PHP hostinzích. Je součástí i nejpopulárnějšího redakčního systému WordPress. Jeho nastavení si ukážeme v další části, ale nejprve se podíváme přímo na PHPMailer, ať víme, co se děje pod kapotou.
Ukázka nastavení pro knihovnu PHPMailer
Pro lepší pochopení si ukážeme nastavení knihovny PHPMailer pro odesílání z PHP aplikace.
Jde o suverénně nejpoužívanější knihovnu řešící odesílání e-mailů na PHP hostinzích. Je součástí i nejpopulárnějšího redakčního systému WordPress. Jeho nastavení si ukážeme v další části, ale nejprve se podíváme přímo na PHPMailer, ať víme, co se děje pod kapotou.
Stažení a instalace PHPMaileru
Autoři PHPMaileru doporučují instalaci pomocí Composeru. Ten je na našem webhostingu dostupný, takže stačí vytvořit adresář pro aplikaci na naší testovací doméně igloonet.net:
❯ cd ~/igloonet.net ❯ mkdir -p apps/posilator ❯ cd apps/posilator
V adresáři spustím instalaci přes Composer:
❯ composer require phpmailer/phpmailer
Pokud vše proběhne v pořádku, zobrazí se:
./composer.json has been created Running composer update phpmailer/phpmailer Loading composer repositories with package information Updating dependencies Lock file operations: 1 install, 0 updates, 0 removals - Locking phpmailer/phpmailer (v7.0.2) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Downloading phpmailer/phpmailer (v7.0.2) - Installing phpmailer/phpmailer (v7.0.2): Extracting archive 8 package suggestions were added by new dependencies, use `composer suggest` to see details. Generating autoload files 1 package you are using is looking for funding. Use the `composer fund` command to find out more! No security vulnerability advisories found. Using version ^7.0 for phpmailer/phpmailer
Konfigurace PHPMaileru
Samotný PHPMailer mám díky Composeru už stažený a nainstalovaný. Teď stačí vytvořit zkušební PHP skript, kterým si odeslání otestuji. Jako jeho základ použiji příklad přímo z repozitáře PHPMaileru na GitHubu.
Pro přihlášení k našemu SMTP serveru jsem si vytvořil adresu ucet-pro-web@igloonet.hosting, kterou nebudu používat k ničemu jinému. Do odesílatele vyplním podpora@igloonet.hostinga na mail-tester.com si všechno otestuji odesláním zprávy na vygenerovanou adresu. Do skryté kopie přidám podpora@igloonet.hosting, ať mám přehled o všem, co se posílá.
<?php
//import tříd PHPMaileru
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
//načtení autoloadu Composeru
require 'vendor/autoload.php';
//vytvoření nové PHPMailer instance
$mail = new PHPMailer(true);
try {
//nastavení serveru
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //zapneme debug výstup
$mail->isSMTP(); //budeme používat SMTP
$mail->Host = 'smtp.igloonet.cz'; //adresa SMTP serveru
$mail->SMTPAuth = true; //zapnutí autorizace
$mail->Username = 'ucet-pro-web@igloonet.hosting'; //uživatelské jméno pro přihlášení k SMTP
$mail->Password = 'MojeSuperTajneHeslo'; //heslo k účtu
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //zapne implicitně TLS šifrování
$mail->Port = 465; //SMTP port
//nastavení příjemců
$mail->setFrom('podpora@igloonet.hosting', 'igloonet.hosting'); //adresa odesílatele
$mail->addAddress('test-gqvuuwj52@srv1.mail-tester.com'); //adresa příjemce
$mail->addBCC('podpora@igloonet.hosting'); //skrytá kopie
// zpráva
$mail->Subject = 'PHPMailer SMTP test';
$mail->Body = 'Toto je test PHPMaileru. Ahoj světe!';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Pro skript si vytvořím adresář publica uložím ho do souboru phpmailer_smtp_test.php:
mkdir public cd public vim phpmailer_smtp_test.php
V případě našeho hostingu bude celá cesta k mému skriptu:
~/igloonet.net/apps/posilator/public/phpmailer_smtp_test.php
Zkušební odeslání
Skript mám připravený, teď už jej stačí jen spustit. K serveru jsem připojený přes SSH a na našem webhostingu mám k dispozici PHP-CLI. Nemusím tedy soubor se skriptem složitě zpřístupňovat a spouštět přes web. Stačí mi k tomu příkaz:
php phpmailer_smtp_test.php
V nastavení PHPMaileru jsem zapnul debug výstup, skript mi díky tomu vypíše přehledně celou komunikaci se SMTP serverem. Hned tedy uvidím, když se něco nepovede. V ostrém provozu je samozřejmě potřeba tento výstup vypnout. Pak už stačí jen zkontrolovat výsledek testu na mail-tester.com.

mail-tester.com
Vidím, že zpráva dorazila v pořádku a dostala maximum možných bodů. Vše funguje správně.
Toto je jen ukázka toho nejjednoduššího použití PHPMaileru. Pro napojení do reálného PHP webu je potřeba provést ještě další kroky. Dosti užitečné mohou být příklady ve zmíněném repozitáři PHPMaileru na GitHubu. Najdete je v adresáři examples.
Nastavení odesílání e-mailů ve WordPress
Čistá instalace WordPressu neumožňuje žádné nastavení odesílání e-mailů (duben 2026, verze 6.9). V základu WordPress spoléhá na odesílání přes funkci mail(), což přináší spoustu problémů, které jsme si už rozebrali. Jak už jsem psal, paradoxně k tomu využívá knihovnu PHPMailer, která obsahuje i třídu pro odesílání přes SMTP. V čisté instalaci WordPressu tedy máme vše potřebné pro odesílání přes SMTP, jen to nemůžeme jednoduše nastavit.
Pro nastavení musíme sáhnout po doplňku. Po zadání „SMTP” do vyhledávání jich najdeme celou řadu. Ty nejstahovanější mají tendenci řešit odesílání dost kreativně a přidávají neuvěřitelné množství balastních funkcí, reklam nebo výzev k předplatnému.
Doporučit lze například plugin SMTP Mailer, který se úzce zaměřuje jen na nastavení do vestavěné knihovny PHPMailer. Nepřidává balastní funkce, které mohou mít vliv na výkon, a hlavně na bezpečnost.
Nastavení pluginu SMTP Mailer pro WordPress
SMTP Mailer nainstalujete do WordPressu jako každý jiný plugin a v menu Nastavení > SMTP Mailer vyplníte údaje k SMTP serveru. V mém případě jde o stejné údaje jako u předešlé zkoušky knihovny PHPMailer, akorát jako odchozí adresu použiji wp@igloonet.net. Z této adresy bude WordPress posílat relační zprávy (například odkaz se změnou hesla nebo třeba upozornění na komentář). V případě, že nějaká zpráva příjemci nedorazí, přijde na tuto adresu upozornění o nedoručení. V administraci hostingu si ji proto přesměruji na svou běžně používanou adresu.
Po uložení nastavení si odesílání otestujte v záložce Test Email. Opět je vhodné použít testovací adresu z mail-tester.com. Po odeslání se zobrazí podrobný výpis komunikace se SMTP serverem, stejně jako u nastavení PHPMaileru.
Odesílání e-mailů přes SMTP ve WordPressu bez doplňků
Pokud jste puristi a nebojíte se konfiguračních souborů, tak si můžete SMTP ve WordPressu nastavit i bez doplňků. V principu to není nic složitého, stačí do souboru wp-config.php zapsat konstanty s nastavením a potom je ve správnou chvíli poslat do PHPMaileru.
Nastavení, které je potřeba přidat do souboru wp-config.php:
// --- MOJE SMTP NASTAVENÍ --- define( 'SMTP_HOST', 'smtp.igloonet.cz' ); define( 'SMTP_USER', 'smtp-ucet-pro-wordpress@igloonet.hosting' ); define( 'SMTP_PASS', 'MojeSuperTajneHeslo2' ); define( 'SMTP_PORT', 465 ); define( 'SMTP_SECURE', 'tls' ); define( 'SMTP_FROM', 'podpora@igloonet.hosting' ); define( 'SMTP_NAME', 'igloonet.hosting WordPress' ); // ---------------------------
Následuje PHP skript, který se spustí při phpmailer_init(odesílání e-mailu) a změní hodnoty v proměnné $phpmailer, kde je nastavení pro PHPMailer. Je potřeba ho umístit do wp-content/mu-plugins/vlastni-smtp.php. Tam bude zajištěno jeho spuštění.
<?php
// Zamezení přímého přístupu k souboru
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
add_action( 'phpmailer_init', 'my_custom_smtp_setup' );
function my_custom_smtp_setup( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = defined('SMTP_HOST') ? SMTP_HOST : '';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = defined('SMTP_PORT') ? SMTP_PORT : 587;
$phpmailer->Username = defined('SMTP_USER') ? SMTP_USER : '';
$phpmailer->Password = defined('SMTP_PASS') ? SMTP_PASS : '';
$phpmailer->SMTPSecure = defined('SMTP_SECURE') ? SMTP_SECURE : 'tls';
$phpmailer->From = defined('SMTP_FROM') ? SMTP_FROM : '';
$phpmailer->FromName = defined('SMTP_NAME') ? SMTP_NAME : '';
}
Odesílání přes API specializované služby
Popsané řešení je vhodné pro menší weby. U e-shopu, kde může nedoručený e-mail znamenat ztrátu objednávky (tedy peněz), je nejlepší nasadit specializovanou službu napojenou přes API. Využít můžete třeba český Ecomail nebo v poslední době populární Resend.
💡Dobrý hosting poznáte ve chvíli, kdy o něm nemusíte přemýšlet.
- V igloonetu se postaráme o správu serverů, deploy a vyřešíme incidenty.
- Většinu problémů proto zachytíme dříve, než se projeví.
- Náš seniorní tým tvoří i zkušení vývojáři, poradíme vám tak s vývojářskými procesy, zkonzultujeme technologie.
Chcete mít servery v dobrých rukou? Kontaktujte nás →
