I am using Laravel 4.2
The answer given by user3158900 is for Laravel 5.* Any one can help me with version 4.2 ?
I would like to override sendSwiftMessage() protected function with my own function.
sendSwiftMessage() is located in
"vendor/laravel/framework/src/Illuminate/Mail/Mailer.php"
I created a
Lib/Mailer/CustomMailer.php
and Set the folder Lib to autoload in composer (PSR4). I can now call/load my function in my controllers by writing:
new Lib\Mailer\CustomMailer;
This is how my file looks like:
<?php namespace Lib\Mailer;
class CustomMailer extends \Illuminate\Mail\Mailer {
/**
* Send a Swift Message instance.
*
* @param \Swift_Message $message
* @return void
*/
protected function sendSwiftMessage($message)
{
if (strpos($message->toString(), '[email protected]') == true) {
Log::info('Not sending mail to [email protected]');
}
else
{
if ($this->events)
{
$this->events->fire('mailer.sending', array($message));
}
if ( ! $this->pretending)
{
$this->swift->send($message, $this->failedRecipients);
}
elseif (isset($this->logger))
{
$this->logMessage($message);
}
}
}
}
However, this sendSwiftMessage() function is not used when I send an email with Swiftmailer in my controller by doing EXAMPLE:
Mail::send(xxxx);
My question: How can I make Swiftmailer/Laravel use my custom sendSwiftMessage() function when I send a message if I don't want to modify all my Controllers that currently use the Mail::send() code