Berlioz Mailer is a PHP library for sending mail, with or without local server.
You can install Berlioz Mailer with Composer, it's the recommended installation.
$ composer require berlioz/mailer
- PHP ^7.1 || ^8.0
- PHP extensions:
- FileInfo
- Packages:
- psr/log
You can send simply the like this:
use Berlioz\Mailer\Address;
use Berlioz\Mailer\Mail;
use Berlioz\Mailer\Mailer;
$mail = (new Mail())
->setSubject('Test of Berlioz/Mailer')
->setText('Text plain of my mail')
->setHtml('<p>Html text of my mail</p>')
->setFrom(new Address('[email protected]', 'Me the sender'))
->setTo([new Address('[email protected]', 'The recipient')]);
$mailer = new Mailer();
$mailer->send($mail);
\Berlioz\Mailer\Mail it's the object representation of a mail.
use Berlioz\Mailer\Address;
use Berlioz\Mailer\Mail;
$mail = new Mail();
$mail->setSubject('Subject of my mail')
->setText('Text plain of my mail')
->setHtml('<p>Html text of my mail</p>')
->setFrom(new Address('[email protected]', 'Me the sender'))
->setTo([new Address('[email protected]', 'The recipient')]);
To add downloadable attachment:
use Berlioz\Mailer\Attachment;use Berlioz\Mailer\Mail;$attachment = new Attachment('/path/of/my/file.pdf');
$mail = new Mail();
$mail->addAttachment($attachment);
To attach an attachment to HTML content:
use Berlioz\Mailer\Attachment;use Berlioz\Mailer\Mail;$attachment = new Attachment('/path/of/my/img.jpg');
$mail = new Mail();
$mail->addAttachment($attachment);
$html = '<p>Html content 1</p>';
$html .= '<img src="cid:' . $attachment->getId() . '">';
$html .= '<p>Html content 2</p>';
$mail->setHtml($html);
WARNING: call $attachment->getId()
method, does that the attachment will be in inline disposition. Only uses this method for inline attachments.
Default transport is \Berlioz\Mailer\Transport\PhpMail uses internal mail() of PHP.
You can uses another available transport for direct communication with SMTP server: \Berlioz\Mailer\Transport\Smtp.
use Berlioz\Mailer\Mailer;
use Berlioz\Mailer\Transport\Smtp;
$smtp = new Smtp(
'smpt.test.com',
'[email protected]',
'password',
25,
['timeout' => 5]
);
$mailer = new Mailer();
$mailer->setTransport($smtp);
use Berlioz\Mailer\Mailer;
$mailer = new Mailer([
'transport' => [
'name' => 'smtp',
'arguments' => [
'host' => 'smpt.test.com',
'username' => '[email protected]',
'password' => 'password',
'port' => 25,
'options' => ['timeout' => 5]
]
]
]);
It's possible to create new transport for various reasons. To do that, you need to create class who implements \Berlioz\Mailer\Transport\TransportInterface interface.