src/Core/EmailService.php + src/Core/SmtpTransport.php. Posílá transakční zprávy (aktivace, 2FA OTP, změny e-mailu, recovery, mailing kampaně).
Konfigurace
Transport
SmtpTransport používá PHP stream_socket_client se STARTTLS na portu 587. Žádný PHPMailer / Symfony Mailer — implementace je vlastní (~200 řádků). Stačí pro transakční objem.
Šablony
Předmět a tělo se generují přes Translator z klíčů_email.*:
Placeholdery
V těle e-mailu se nahrazují:{username}— uživatelské jméno{link}— aktivační / recovery / verification odkaz{code}— 2FA OTP{ip}/{user_agent}— kontextové info
API použití
Logování
Každý odeslaný e-mail se loguje dologs/app.log s úrovní INFO. Selhání jako WARN (typicky přechodné — SMTP timeout). Třetí pokus + selhání = ERROR.
Mailing kampaně
Admin může poslat hromadnou zprávu přesPOST /api/v1/admin/mailing. Backend zařadí příjemce do fronty (mailing_queue tabulka) a SMTP posílá v dávkách. Postup:
- Filtr příjemců (role, faction, verified).
- Vytvoření dávky 100 e-mailů.
- Posílání s 1s delay mezi dávkami (proti Hostinger limitům).
- Reporting do admin panelu (úspěch / selhání).
Bezpečnost
- SPF a DKIM nastavte v DNS pro
dayzero.cz(Hostinger to pomáhá). - Reverse DNS pro IP serveru =
dayzero.cz(proti spam scoringu). - Žádné inline CSS expressions, žádné obrázky z externích URL.
- Always plain text + HTML pro každou zprávu.