Skip to content

Mailer — Třídy

MessageBuilder

Fluent builder pro sestavení Message. Vstupní bod pro každé odeslání.

use Core\Mailer\MessageBuilder;

$message = MessageBuilder::compose()
    ->to('prijemce@firma.cz')
    ->subject('Předmět')
    ->html('<p>Obsah</p>')
    ->build();

Metody

Metoda Popis
compose(): self Statický konstruktor
to(string $emails): self Příjemci (CSV), aplikuje test redirect
cc(string $emails): self Kopie (CSV)
bcc(string $emails): self Skrytá kopie (CSV)
replyTo(string $email): self Reply-To hlavička
subject(string $subject): self Předmět
html(string $html): self HTML tělo
text(string $text): self Plaintext tělo
from(string $email, string $name = ''): self Přepis odesílatele (výjimečně, viz níže)
build(): Message Vrátí sestavený Message

from() přepisuje globální odesílatele nastaveného v transportu. Použij pouze tehdy, kdy zpráva musí mít jinou identitu odesílatele (např. odesílání jménem zákazníka).


Message

Datový objekt zprávy. Naplňuje ho MessageBuilder, čte ho transport.

use Core\Mailer\Message;

// Přímé plnění (méně obvyklé — prefer MessageBuilder)
$msg = new Message();
$msg->to      = ['a@b.cz'];
$msg->subject = 'Test';
$msg->html    = '<p>Ahoj</p>';

Vlastnosti

Vlastnost Typ Výchozí Popis
from string '' Přepis odesílatele
fromName string '' Jméno odesílatele
replyTo string '' Reply-To
to array [] Pole e-mailů příjemců
cc array [] Kopie
bcc array [] Skrytá kopie
subject string '' Předmět
html string '' HTML obsah
text string '' Plaintext obsah
attachments array [] Přílohy — viz níže
templateId ?int null Ecomail: ID šablony
variables array [] Ecomail: proměnné šablony
trackOpens bool true Sledování otevření
trackLinks bool true Sledování prokliků
messageStream ?string null Postmark: message stream
tag ?string null Postmark: tag

Formát příloh:

$msg->attachments = [
    ['name' => 'faktura.pdf', 'file' => '/abs/cesta/faktura.pdf'],
    ['name' => 'logo.png',    'file' => '/abs/cesta/logo.png'],
];

MailerFactory

Vytvoří CoreMailer s transportem dle MAILER_DRIVER v .env.

use Core\Mailer\MailerFactory;

$mailer = MailerFactory::create();
$mailer->send($message);

Hodí RuntimeException pokud chybí povinná konfigurace (např. POSTMARK_API_TOKEN).


CoreMailer

Tenká fasáda nad transportem. Volá $transport->send($message).

use Core\Mailer\CoreMailer;
use Core\Mailer\Transport\SmtpTransport;

// Ruční sestavení (výjimečně — normálně stačí MailerFactory)
$mailer = new CoreMailer(new SmtpTransport([...]));
$mailer->send($message);

Alert

Odesílá e-mailové upozornění při kritických log událostech (error, critical, alert, emergency). Používá PHP mail() přímo — neprochází transportem.

use Core\Mailer\Alert;

// Nastavit adresu při bootstrap
Alert::setAlertEmail('ops@firma.cz');

// Pak Logger automaticky volá Alert::sendIfNeeded()

Zprávy loguje přes Logger do mail.log.


resolveRecipients()

Interně volána MessageBuilder::to(). Parsuje CSV string a v test módu přesměruje na email:test.

$emails = resolveRecipients('a@b.cz, c@d.cz');
// normálně  → ['a@b.cz', 'c@d.cz']
// on_test   → [CONFIG['email:test']]

resolveCopyRecipients()

Interně volána MessageBuilder::cc() a bcc(). V test módu vrátí prázdné pole — kopie se nepošlou.

$emails = resolveCopyRecipients('a@b.cz, c@d.cz');
// normálně  → ['a@b.cz', 'c@d.cz']
// on_test   → []

Transporty

SmtpTransport

Odesílání přes SMTP pomocí PHPMailer. Výchozí transport.

  • Timeout: 10 s
  • STARTTLS (SMTP_SECURE=true) nebo SMTPS (false)
  • Hodí RuntimeException při chybě

PostmarkTransport

Odesílání přes Postmark API (wildbit/postmark-php).

  • Podporuje přílohy, CC, BCC, tagy, message streams
  • Sledování otevření a kliků

EcomailTransport + EcomailClient

Dva režimy:

  1. Vlastní HTML$message->templateId je null, posílá html + text
  2. Ecomail šablona$message->templateId je ID šablony, proměnné v $message->variables

MailTransport

Odesílání přes PHP mail() (PHPMailer v mail módu). Vhodné pro jednoduchá prostředí bez SMTP.

NullTransport

Nedělá nic — vhodný pro dev/test prostředí, kde nechceme skutečně odesílat.