Использование mailgun в качестве почтового драйвера У меня возникла проблема с тем, что слепая копия не работает должным образом, так как она показывает все адреса всем получателям. Я нашел исправление, которое решило бы проблему, но для редактирования файла MailgunTransport.php требуется файл vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php. Я не хочу, чтобы изменить файл на вендоры папку, так что я пытаюсь продлить этот класс MailgunTransport ...Переопределить класс MailGunTransport в Laravel 4.2
Я создал папку с именем приложения/пользовательский/расширения с двумя файлами, CustomMailServiceProvider ...
<?php namespace custom\extensions;
use Swift_Mailer;
use Illuminate\Support\ServiceProvider;
use Swift_SmtpTransport as SmtpTransport;
use Swift_MailTransport as MailTransport;
use Illuminate\Mail\Transport\LogTransport;
use custom\extensions\CustomMailgunTransport;
use Illuminate\Mail\Transport\MandrillTransport;
use Swift_SendmailTransport as SendmailTransport;
class CustomMailServiceProvider extends \Illuminate\Mail\MailServiceProvider {
}
... и CustomMailgunTransport.php
<?php namespace custom\extensions;
class CustomMailgunTransport extends Illuminate\Mail\Transport\MailgunTransport {
/**
* {@inheritdoc}
*/
public function send(Swift_Mime_Message $message, &$failedRecipients = null)
{
$client = $this->getHttpClient();
$to = $this->getTo($message);
$message->setBcc([]);
$client->post($this->url, ['auth' => ['api', $this->key],
'body' => [
'to' => $to,
'message' => new PostFile('message', (string) $message),
],
]);
}
}
CustomMailServiceProvider.php не переопределяют любые оригинальные методы, но изменяет вызов из исходного MailgunTransport в пользовательские расширения \ \ CustomMailgunTransport.
Я загрузил каталог приложений/пользовательский/расширения новых файлов в composer.json classmap ...
{
...
"autoload": {
"classmap": [
...
"app/custom/extensions"
],
},
...
}
И я сменил оригинальный «Осветите \ почту \ MailServiceProvider» до «обычая \ расширения \ CustomMailServiceProvider»...
'providers' => array(
...
//'Illuminate\Mail\MailServiceProvider',
'custom\extensions\CustomMailServiceProvider',
...
),
Однако, на данный момент я не знаю, как назвать почты функций. Если я пытаюсь использовать фасад Mail, он использует исходный код из MailgunTransport.php
Нужно ли создавать пользовательский фасад? и если так ... Как я могу это сделать? Или есть проблемы с кодом выше? Есть ли способ расширить только MailgunTransport.php без создания CustomMailServiceProvider?