あなたは\Illuminate\Mail\TransportManager
クラスを見てみた場合、SMTP設定が設定からに引っ張られる場合、createSmtpDriver()
方法では、あなたは見つけるでしょう。あなたの設定で、あなたのドライバがsmtp
に設定されている場合、Laravelはこのメソッドを呼び出します。
Laravel Mailer
クラスには、Swift Mailerインスタンスを設定するパブリックメソッドが含まれています。だから、基本的に(私はこれをテストしていない)独自のインスタンスを作成し、あなたのメッセージを送信する前にそれを通過できます。
通常
public function yourMethod(Mailer $mailer)
{
$transport = Swift_SmtpTransport::newInstance(
'YourHost', 'YourPort'
);
$transport->setUsername('YourPassword');
$transport->setPassword('YourPassword');
$swift = new Swift_Mailer($transport);
$mailer->setSwiftMailer($swift);
$mailer->send(...);
}
、あなたはメーラーのようなLaravelクラスにいくつかのカスタム機能を紹介したい場合は、独自のドライバ(この場合は独自のトランスポート)を定義し、LaravelのAPIを使用してそれを拡張し、独自のメール送信方法を追加することができます。
また、これはテストしていませんが、TransportManager
クラスを拡張して、独自のドライバを追加する可能性があります。たとえば、AppServiceProvider
に次のコードを入力します。
$manager = app('swift.transport'); // Will get you an instance of TransportManager
$manager->extend('customsmtp', function() {
// Your custom code to create your own transport for the mailer. Just like the createSmtpDriver method in TransportManager.
$transport = Swift_SmtpTransport::newInstance(
'YourHost', 'YourPort'
);
$transport->setUsername('YourPassword');
$transport->setPassword('YourPassword');
return $transport;
});
ありがとう、試してみてください! – user1365447