2016-08-03 4 views
1

パーソナライズバッチメールを多数のユーザーに送信します。これは、テンプレートの電子メールを設定して送信する前に、各ユーザーの情報を送信することを意味します。LaravelのMailgunでパーソナライズされたバッチメール

もちろん、これは容易にメーラー(またはMailファサード)方法(例えばsendrawqueue等)は、ユーザデータをループし、使用してLaravelで達成することができる:ただし

foreach ($users as $user) { 
    $data = ['user' => $user]; 
    $this->mailer->queue($views, $data, function($message) use($user) { 
     $message->to($user->email, $user->name); 
    }); 
} 

を私が送りたい電子メールの量を考えれば、これは私のニーズにとっては遅すぎるでしょう。いくつかの調査の後、私はMailgunがそのAPIを使ってパーソナライズされたバッチEメールを送信することをサポートしていることを発見しました。彼らのウェブサイトから:

単一のAPIコールで

を送信するバッチは、1000年に完全にパーソナライズされた電子メールまで送信することができます。

MailgunはMIMEメッセージを正しくアセンブルし、メールを各ユーザーに個別に送信します。そのため、大量の電子メールをより速く、より多くのリソースを集中的に送信することができます。

  • Laravelは、このように送信するパーソナライズされたバッチの電子メールをサポートしている場合、私は不思議でしたか?私はこれをサポートするためにドキュメントやコードで何かを見つけることはできませんでした。
  • Laravelでこれをサポートする既存のパッケージはありますか?もちろん

、私は喜んでこの直接MailgunのAPIを使用するか、使用可能な任意のSDKを使用して実装しますが、それは最初Laravelによってサポートされているかどうかを確認したかったことができました。

+0

私は数ヶ月前にこの同じことを探していましたが、準備が整った解決策を見つけることができませんでした。 Mailgunのバッチを使用するのは本当に簡単です。 –

+0

ご返信ありがとうございます。残念です。あなたは答えを投稿し、あなたがそれを達成した方法を潜在的に含めることを気にしますか?私はそれ以上の反応を得なければ受け入れることができます。 – Jonathon

+0

私は[swiftmailerとのバッチで電子メールを送信する](http://swiftmailer.org/docs/sending.html)で[Swiftmailer Mailgun bundle](https://github.com/tehplague/swiftmailer-mailgun-bundle)を使用しています。 #send-emails-in-batch)を使用してください。 Laravelアプリでこのバンドルを使用できる場合は、それ以上見てはいけません。 – BentCoder

答えて

1

どのように私は同じ準備が整った解決策を見つけることができなかったので、同じ状況を解決しました。

 $subscribers = Subscriber::active()->get(); 
     $batch = 0; 
     $batch_subscribers = array(); 
     $batch_subscribers_data = array(); 
     foreach ($subscribers as $subscriber) 
     { 
      $batch_subscribers[] = $subscriber->mail; 
      $batch_subscribers_data[$subscriber->mail] = array(
       "id" => $subscriber->id, 
       "mail" => $subscriber->mail, 
       "name" => $subscriber->name 
      ); 
      $batch++; 
      if($batch < 999){ 
       continue; 
      } 
      $input['to'] = $batch_subscribers; 
      $input['vars'] = $batch_subscribers_data; 
      Mailgun::send('email/email-base', ['input' => $input], 
       function ($message) use ($input) 
       { 
        $message->subject($input['asunto']); 
        $message->to($input['to']); 
        $message->replyTo("[email protected]"); 
        $message->recipientVariables($input['vars']); 
       }); 
      $batch_subscribers = array(); 
      $batch_subscribers_data = array(); 
      $batch = 0; 
     } 
関連する問題