CeníkAPI & SMTPŘešeníSrovnáníNástrojeBlogFAQKontakt
PřihlásitRegistrovat
Tmavý režim
← Zpět na blog
24. října 2026·4 min čtení·Tým TopEmail

WordPress a SMTP relay: kontaktní formuláře a reset hesla přes smtp.topemail.cz, s pluginem i bez něj

Jak dostat všechny e-maily z WordPressu (formuláře, reset hesla, notifikace) na SMTP relay. Nastavení pluginem a varianta bez pluginu přes konstanty ve wp-config.php a hook phpmailer_init, správná From adresa a značky pro párování.

WordPress odesílá e-maily funkcí wp_mail(): odkazy pro reset hesla, upozornění na komentáře, zprávy z kontaktního formuláře, notifikace z pluginů. Ve výchozím stavu wp_mail() předá zprávu PHP funkci mail() a ta ji odešle přímo z webového serveru, bez DKIM podpisu a z IP adresy, kterou sdílíte s desítkami cizích webů. Správným řešením je SMTP relay. V článku ukážeme dvě cesty: pluginem pro ty, kdo nechtějí sahat do kódu, a bez pluginu pro vývojáře, kteří mají WordPress ve verzovaném repozitáři a každý plugin navíc jim vadí.

Hodnoty, které budete potřebovat

Server:      smtp.topemail.cz
Port:        587 (STARTTLS), nebo 465 (TLS)
Uživatel:    CLIENT_ID
Heslo:       SECRET
Odesílatel:  adresa na doméně ověřené v TopEmail, např. info@vas-web.cz

Před nastavením ověřte doménu: TXT topemail._domainkey, include:spf.topemail.cz v SPF a _dmarc. Jak na to, popisuje návod k SPF, DKIM a DMARC.

Cesta 1: plugin

Nejrychlejší. Nainstalujte WP Mail SMTP nebo FluentSMTP, zvolte Other SMTP, zadejte hodnoty výše a vynuťte From adresu. Podrobný postup s obrázky polí máme v návodu pro WooCommerce; pro web bez e-shopu je identický, jen vynecháte část o nastavení WooCommerce.

Cesta 2: bez pluginu

wp_mail() interně používá knihovnu PHPMailer a před odesláním volá akci phpmailer_init. Stačí se na ni napojit a přepnout PHPMailer na SMTP. Udělejte to jako mu-plugin: soubory v wp-content/mu-plugins/ se načítají vždy, nelze je vypnout v administraci a nejsou závislé na šabloně.

Přihlašovací údaje patří do wp-config.php, ne do kódu, který by mohl skončit v repozitáři:

// wp-config.php
define( 'TOPEMAIL_SMTP_USER', 'CLIENT_ID' );
define( 'TOPEMAIL_SMTP_PASS', 'SECRET' );
define( 'TOPEMAIL_FROM', 'info@vas-web.cz' );
define( 'TOPEMAIL_FROM_NAME', 'Můj web' );

A samotný mu-plugin:

<?php
// wp-content/mu-plugins/topemail-smtp.php
if ( ! defined( 'ABSPATH' ) ) exit;

add_action( 'phpmailer_init', function ( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.topemail.cz';
    $phpmailer->Port       = 587;
    $phpmailer->SMTPSecure = 'tls';   // STARTTLS; pro port 465 použijte 'ssl'
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Username   = TOPEMAIL_SMTP_USER;
    $phpmailer->Password   = TOPEMAIL_SMTP_PASS;
} );

add_filter( 'wp_mail_from', fn() => TOPEMAIL_FROM );
add_filter( 'wp_mail_from_name', fn() => TOPEMAIL_FROM_NAME );

Filtry wp_mail_from a wp_mail_from_name jsou důležité: bez nich WordPress posílá z wordpress@vas-web.cz, což je sice na vaší doméně, ale působí nedůvěryhodně, a hlavně některé pluginy dosazují jiné odesílatele. Filtr s vysokou prioritou je přepíše:

add_filter( 'wp_mail_from', fn() => TOPEMAIL_FROM, PHP_INT_MAX );

Používejte ho, pokud máte formulářový plugin, který trvá na From adrese návštěvníka.

Kontaktní formuláře: From vs. Reply-To

Klasická chyba: formulář pošle zprávu s From nastaveným na e-mail návštěvníka (jan.novak@gmail.com), aby šlo kliknout na „Odpovědět". Relay takovou zprávu odmítne (550 5.7.1, From není na ověřené doméně) a i bez relay by ji Gmail zahodil, protože porušuje DMARC gmail.com. Správně:

  • From: vaše adresa na ověřené doméně, např. formular@vas-web.cz.
  • Reply-To: adresa návštěvníka. Tlačítko „Odpovědět" funguje stejně.

V Contact Form 7 to znamená v záložce E-mail pole „Od" [_site_title] <formular@vas-web.cz> a do „Další hlavičky" řádek Reply-To: [your-email]. WPForms a Gravity Forms mají pro Reply-To samostatné pole.

Značky pro párování

Relay umí z hlaviček X-TopEmail-Tag-<klíč> vyrobit značky, které se vrátí ve webhooku a v historii. Ve WordPressu je přidáte filtrem wp_mail:

add_filter( 'wp_mail', function ( $args ) {
    $headers = (array) ( $args['headers'] ?? [] );
    $headers[] = 'X-TopEmail-Tag-source: wordpress';
    $args['headers'] = $headers;
    return $args;
} );

Hodí se, když z jednoho účtu posílá web i e-shop nebo fakturace a chcete ve statistikách vidět, kolik čeho odešlo.

Test

Nejrychlejší test bez klikání je WP-CLI:

wp eval 'var_dump( wp_mail( "vas@gmail.com", "Test SMTP", "Ahoj z WordPressu" ) );'

bool(true) znamená, že PHPMailer zprávu předal relay. Pak zprávu otevřete v Gmailu, Zobrazit originál, a zkontrolujte SPF, DKIM a DMARC PASS. Druhý test je Zapomenuté heslo na přihlašovací stránce: je to nejkritičtější e-mail webu a musí dorazit do pár sekund.

Pokud wp_mail() vrátí false, chybu zjistíte akcí wp_mail_failed:

add_action( 'wp_mail_failed', function ( $error ) {
    error_log( 'wp_mail: ' . $error->get_error_message() );
} );

V logu pak uvidíte přímo odpověď serveru, typicky 535 5.7.8 Authentication credentials invalid (špatné údaje) nebo 550 5.7.1 (odesílatel mimo ověřenou doménu).

Časté chyby

  • Dva mechanismy najednou. SMTP plugin a vlastní phpmailer_init hook se budou přepisovat. Zvolte jedno.
  • Heslo v repozitáři. Konstanty patří do wp-config.php, který je v .gitignore. Pokud klíč unikl, zneplatněte ho v dashboardu a vygenerujte nový.
  • Multisite s více doménami. Každý web v síti musí posílat z domény, která je v TopEmail ověřená; buď ověřte všechny, nebo posílejte z jedné společné.
  • Staging posílá reálným lidem. Na stagingu použijte testovací klíč nebo odesílání vypněte filtrem pre_wp_mail.
  • Hosting blokuje port 587. Přepněte na 465 a SMTPSecure = 'ssl'.

Shrnutí

Bez pluginu stačí jeden mu-plugin s phpmailer_init a čtyři konstanty ve wp-config.php; s pluginem pět polí v administraci. V obou případech dbejte na From adresu z ověřené domény a návštěvníka formuláře dávejte do Reply-To. E-maily pak mají DKIM podpis, stav doručení v dashboardu a prvních 1 000 měsíčně je zdarma. Co relay přesně umí a jak se liší od REST API, shrnuje přehled API a SMTP.

WordPressSMTPintegracenávodimplementace
Transakční e-maily z vaší domény

Transakční e-maily z vaší domény přes API nebo SMTP, od 0,025 do 0,06 Kč za e-mail podle objemu, prvních 1 000 e-mailů měsíčně zdarma. Registrace zdarma, bez platební karty.

Registrovat zdarma →