당신이 \Illuminate\Mail\TransportManager
클래스를 살펴 경우, createSmtpDriver()
방법, 당신은 SMTP 설정이 설정에서 당겨 곳 찾을 수 있습니다. 귀하의 설정에서 드라이버를 smtp
으로 설정하면 Laravel이이 메소드를 호출합니다.
Laravel Mailer
클래스에는 Swift Mailer 인스턴스를 설정하는 public 메서드가 포함되어 있습니다. 그래서 당신은 기본적으로 (나는이 테스트를하지 않은 경우) 자신의 인스턴스를 생성하고 당신이 당신의 메시지를 보내기 전에 통해 그것을 전달할 수 :
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