Abstract Class Yiisoft\Mailer\BaseMailer
| Inheritance | Yiisoft\ |
|---|---|
| Implements | Yiisoft\ |
| Subclasses | Yiisoft\ |
BaseMailer serves as a base class that implements the basic functions required by {@see MailerInterface}.
Concrete child classes may focus on implementing the {@see \
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\ |
|
| send() | Sends the given email message. Child classes should implement {@see BaseMailer::sendMessage()} with the actual email sending logic. | Yiisoft\ |
| sendMultiple() | Sends multiple messages at once. | Yiisoft\ |
Protected Methods
| Method | Description | Defined By |
|---|---|---|
| sendMessage() | Sends the specified message. | Yiisoft\ |
Method Details
| public mixed __construct ( ?\ | ||
| $defaultMessageSettings | ?\ |
|
| $eventDispatcher | ?\ |
|
public function __construct(
private readonly ?MessageSettings $defaultMessageSettings = null,
private readonly ?EventDispatcherInterface $eventDispatcher = null,
) {}
Sends the given email message. Child classes should implement {@see BaseMailer::sendMessage()} with the actual email sending logic.
| public void send ( Yiisoft\ | ||
| $message | Yiisoft\ |
Email message instance to be sent |
final public function send(MessageInterface $message): void
{
$message = $this->defaultMessageSettings?->applyTo($message) ?? $message;
$event = $this->eventDispatcher?->dispatch(new BeforeSend($message));
if ($event instanceof BeforeSend && $event->preventSendingMessage) {
return;
}
$this->sendMessage($message);
$this->eventDispatcher?->dispatch(new AfterSend($message));
}
Sends the specified message.
This method should be implemented by child classes with the actual email sending logic.
| protected abstract void sendMessage ( Yiisoft\ | ||
| $message | Yiisoft\ |
The message to be sent |
abstract protected function sendMessage(MessageInterface $message): void;
Sends multiple messages at once.
This method may be implemented by some mailers which support more efficient way of sending multiple messages in the same batch.
| public Yiisoft\ | ||
| $messages | Yiisoft\ |
List of email messages, which should be sent. |
| return | Yiisoft\ |
The result object that contains all messages and errors for failed sent messages. |
|---|---|---|
final public function sendMultiple(array $messages): SendResults
{
$successMessages = [];
$failMessages = [];
foreach ($messages as $message) {
try {
$this->send($message);
} catch (Throwable $e) {
$failMessages[] = ['message' => $message, 'error' => $e];
continue;
}
$successMessages[] = $message;
}
return new SendResults($successMessages, $failMessages);
}
User Contributed Notes
Leave a comment
Join the conversation to share a note.