2017-08-28 5 views
0

Ma mission est de massifier les emails des utilisateurs de mon site.Comment envoyer des emails en masse avec Laravel & Mailgun

Je veux prendre les emails de tous les utilisateurs de mon site, et leur envoyer un message, alias email en masse. J'utilise actuellement le service mailgun pour envoyer des emails de confirmation lorsqu'un utilisateur s'inscrit sur mon site. ci-dessous est un exemple de code que j'utilise.

Je veux savoir si je pourrais utiliser un code similaire pour envoyer des emails en masse.

public function sendEmail($sub) 
{ 
    $user = $this; 
    Mail::send('mail.confirm',['user' => $user, $sub => $sub], function($mail) use ($user,$sub) { 
    $mail->from('[email protected]', 'Website'); 
    $mail->to($user->email, $user->name)->subject($sub . ' Confirm Website Email'); 
    }); 
} 

des idées?

+0

Je ne sais pas comment le PHP sdk wo rks, mais Mailgun lui-même a le concept de liste jusqu'à 2,5 millions de destinataires. Vous devez les ajouter d'abord, puis envoyer à l'alias de la liste enverra une copie à tous les destinataires. – NoNameProvided

Répondre

0

Je vous suggère d'utiliser Queues pour cette bourre

Faire un fichier de file d'attente comme ci-dessous

class SendEmail extends Job implements ShouldQueue 
{ 
    use InteractsWithQueue, SerializesModels; 
    public $data , $email; 

    /** 
    * Create a new job instance. 
    * 
    * @return void 
    */ 
    public function __construct($data,$email) 
    { 
     $this->data=$data; 
     $this->email=$email; 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 

     Mail::send('mail.confirm', [ 
        'title' => $this->data['body'] , 
        'body' => $this->data['body'], 
        , 
       ], function ($message) { 
        $message->from('[email protected]', 'Test Notification'); 
        $message->to($this->email)->subject($this->data['subject'])); 
       } 
       ); 


    } 

} 

appeler à partir contrôleur

use App\Jobs\SendEmail; 
class EmailController extends Controller { 

    public function send() { 
     $data = array 
      (
      'title' => 'title', 
      'body' => 'body', 
      'subject' => 'subject' 
     ); 

     $emails=array("[email protected]","[email protected]") 
     foreach($emails as $val){ 
      $this->dispatch(new SendAlertEmail($data, $val)); 
     } 


} 

S'il vous plaît vérifier https://laravel.com/docs/5.4/queues et https://scotch.io/tutorials/why-laravel-queues-are-awesome