2016-12-26 6 views
4

私はlaravel 5.3を使用しています。 異なる資格情報(ホスト、ポート、ユーザー名、パスワード)でメールを送信する必要があります。laravel 5のメールトランスポータを条件付きで変更するにはどうすればよいですか?

私はデフォルトでlaravel config(.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(); 
       // 
      }); 
    } 

ITSは複数とダイナミックトランスポーターで正常に動作します。

ありがとうございました!

関連する問題