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í
RuntimeExceptionpř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:
- Vlastní HTML —
$message->templateIdjenull, posíláhtml+text - Ecomail šablona —
$message->templateIdje 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.