phpsoftbox / mailer
SMTP mailer for the PhpSoftBox framework
Requires
- php: ^8.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.93
- phpsoftbox/cli-app: dev-master
- phpsoftbox/cs-fixer: ^1.1.0
- phpunit/phpunit: ^11.2
This package is auto-updated.
Last update: 2026-07-08 08:26:47 UTC
README
SMTP-отправка для PhpSoftBox, совместимая с компонентом Notifications.
Быстрый старт
use PhpSoftBox\Mailer\Smtp\SmtpClient; use PhpSoftBox\Mailer\Smtp\SmtpClientConfig; use PhpSoftBox\Mailer\Transport\SmtpEmailTransport; use PhpSoftBox\Mailer\Transport\FileEmailTransport; use PhpSoftBox\Notifications\Email\EmailChannel; $config = new SmtpClientConfig( host: 'mailhog', port: 1025, username: null, password: null, encryption: 'none', helo: 'domain.local', ); $transport = new SmtpEmailTransport( new SmtpClient($config), defaultFrom: 'no-reply@domain.local', defaultFromName: 'CHGS WMS', ); $channel = new EmailChannel($transport, /* markdown */ null, /* renderer */ null, 'CHGS WMS <no-reply@domain.local>');
defaultFrom и payload from могут быть как чистым mailbox-адресом, так и адресом вида
CHGS WMS <no-reply@domain.local>. SMTP envelope MAIL FROM всегда получает только mailbox-часть.
Если транспорт используется без EmailChannel, отображаемое имя можно задать отдельно через
defaultFromName.
File transport
Для локальной отладки можно сохранять письма в файлы:
$transport = new FileEmailTransport( __DIR__ . '/var/mails', defaultFrom: 'no-reply@domain.local', defaultFromName: 'CHGS WMS', );
MailHog
Для локальной отладки удобно использовать MailHog (SMTP + UI).
Сервис можно поднять через docker-compose:
mailhog: image: mailhog/mailhog ports: - "1025:1025" - "8025:8025"
UI доступен на http://localhost:8025.
EmailMessage layout
Для шаблонных email используйте template() и layout():
use PhpSoftBox\Mailer\Message\EmailMessage; $message = EmailMessage::create('Тема письма') ->template('email/content.phtml', ['name' => 'User']) ->layout('email/layout.phtml', ['title' => 'Тема письма']);
В template()/layout() можно передавать как массив, так и DTO-объект.