Final Class Yiisoft\Mailer\FileMailer
| Inheritance | Yiisoft\ |
|---|---|
| Implements | Yiisoft\ |
FileMailer is a mock mailer that save email messages in files instead of sending them.
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() | Yiisoft\ |
Method Details
| public mixed __construct ( string $path, callable|null $filenameCallback = null, Yiisoft\ | ||
| $path | string |
The path where message files located. |
| $filenameCallback | callable|null |
A PHP callback that return a file name which will be used to save the email message. |
| $messageSettings | Yiisoft\ |
The default and extra message settings. |
| $eventDispatcher | \ |
The event dispatcher instance. |
public function __construct(
private readonly string $path,
?callable $filenameCallback = null,
?MessageSettings $messageSettings = null,
?EventDispatcherInterface $eventDispatcher = null,
) {
parent::__construct($messageSettings, $eventDispatcher);
$this->filenameCallback = $filenameCallback;
}
Defined in:
Yiisoft\
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));
}
| protected void sendMessage ( Yiisoft\ | ||
| $message | Yiisoft\ |
|
protected function sendMessage(MessageInterface $message): void
{
$filename = $this->path . DIRECTORY_SEPARATOR . $this->generateMessageFilename($message);
$filepath = dirname($filename);
if (!is_dir($filepath) && !mkdir($filepath, 0777, true) && !is_dir($filepath)) {
throw new RuntimeException(sprintf('Directory "%s" was not created.', $filepath));
}
file_put_contents($filename, $message->__toString());
}
Defined in:
Yiisoft\
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.