2016-12-26 11 views
4

저는 laravel 5.3을 사용합니다. 다른 자격 증명 (호스트, 포트, 사용자 이름, 암호)을 사용하여 메일을 보내야합니다.5 단계에서 메일 전송기를 조건부로 변경하는 방법은 무엇입니까?

나는 기본 laravel의 설정과 함께 보낼 수 있습니다 (.env의).

는하지만 난 동적 수준의 구현이 필요합니다.

내가 설정의 배열을,

// Pre-Mail Setup Config. 
      $store_config = [ 
       'list' => 
        //SET 1 
       ['from_name' => 'sender1', 
       'from_address' => 'from_adderss1', 
       'return_address' => 'reply1', 
       'subject' => 'subject1', 
       'host' => 'host1', 
       'port' => 'post1', 
       'authentication' => 'auth1', 
       'username' => 'uname1', 
       'password' => 'pass1'], 
       //SET 2 
       [.........], 
       //SET 3 
       [.........] 
      ]; 

내가하려고 메일을 보내 다음,하지만 작동하지 않습니다.

// Inside Foreach. 
$transporter = \Swift_MailTransport::newInstance('smtp.gmail.com', 465, 'ssl') 
       ->setUsername($config['username']) 
       ->setPassword($config['password']); 

$mailer = \Swift_Mailer::newInstance($transporter); 


$message->from($config['from_address'], $config['from_name']); 


$message->to('To_Email, 'Name') 
     ->subject('My Subject') 
     ->setBody('My Content', 'text/html'); 
$mailer->send($message); 

내 코드에 어떤 문제가 있습니까?

가능합니까?

또는 어떤 다른 해결책?

+0

가능한 복제물 http://stackoverflow.com/questions/26546824/multiple-mail-configurations –

+0

사실, 해당 유형의 구현은 래벨 5에서 ​​사용되지 않습니다. 그래서 버전 수준 솔루션을 만들고 지정합니다. –

답변

0

마지막으로 나는 이것을 해결하는 방법을 찾는다.

사실 Laravel 5 완전히이 멀티화물 운송 설정을 지원하지 않습니다.

그래서 나는 그것을 달성하기 위해 다른 패키지를 사용합니다.

내 코드는,

foreach ($store_configs['list'] as $store_config) { 

     // Create Custom Mailer Instances. 
     $mailer = new \YOzaz\LaravelSwiftmailer\Mailer(); 
     $transport = \Swift_SmtpTransport::newInstance(
              $store_config['host'], 
              $store_config['port'], 
              $store_config['authentication']); 

     // Assign Dynamic Username. 
     $transport->setUsername($store_config['username']); 

     // Assign Dynamic Password. 
     $transport->setPassword($store_config['password']); 
     $smtp = new \Swift_Mailer($transport); 
     $mailer->setSwiftMailer($smtp); 



      $mailer->send('template', ['data'], function ($message) use ($queue) { 
       // Default Response goes here 
       $message->from('From Address', 'From Name'); 

       $message->to($email, 'Name')->subject('My Subject') 
        ->setBody('My HTML', 'text/html'); 
       $message->getSwiftMessage(); 
       // 
      }); 
    } 

그것의 여러 동적 수송과 잘 작동합니다.

모두에게 감사드립니다!