Skip to content

Mailer — Přehled

Modul pro odesílání e-mailů s výměnnými transporty. Konfigurace přes .env, odesílání přes MessageBuilder + MailerFactory.

Architektura

MailerFactory::create()
    └── CoreMailer
            └── TransportInterface
                    ├── SmtpTransport      (výchozí)
                    ├── PostmarkTransport
                    ├── EcomailTransport
                    ├── MailTransport      (PHP mail())
                    └── NullTransport      (testovací — nic neodešle)

MailerFactory čte MAILER_DRIVER z .env a vrátí nakonfigurovaný CoreMailer.

Konfigurace

Společné proměnné

MAILER_DRIVER=smtp          # smtp | postmark | ecomail | mail | null
MAIL_FROM=noreply@firma.cz
MAIL_FROM_NAME=Firma s.r.o.

SMTP (výchozí)

MAILER_DRIVER=smtp
SMTP_HOST=smtp.firma.cz
SMTP_PORT=587
SMTP_USERNAME=user@firma.cz
SMTP_PASSWORD=tajneheslo
SMTP_SECURE=true            # true = STARTTLS, false = SMTPS

Postmark

MAILER_DRIVER=postmark
POSTMARK_API_TOKEN=xxxx

Ecomail

MAILER_DRIVER=ecomail
ECOMAIL_API_KEY=xxxx
ECOMAIL_REPLY_TO=reply@firma.cz

PHP mail()

MAILER_DRIVER=mail
MAIL_SENDER=bounce@firma.cz   # volitelný Sender header (Return-Path)

Null transport (testy, dev)

MAILER_DRIVER=null

Test doručení

Pokud je v konfigu nastaven příznak email:on_test = true:

  • MessageBuilder::to() přesměruje příjemce na adresu z email:test
  • MessageBuilder::cc() a bcc() jsou potlačeny (prázdné pole)
# config/websiteN.yaml
email:
  on_test: true
  test: dev@firma.cz

Inicializace v bootstrap

app/mailer.php je načteno automaticky při startu aplikace:

// app/mailer.php
$mailer = MailerFactory::create();

$mailer je globální instance — v praxi se ale MailerFactory::create() volá přímo v místě použití.