在Laravel中使用Mailgun的个性化批量电子邮件

时间:2016-08-03 11:47:34

标签: php laravel email mailgun bulk-email

我希望将个性化批量电子邮件发送给大量用户。我的意思是,我想建立一个模板电子邮件,并在发送之前将每个用户的信息注入其中。

当然,使用Laravel循环访问用户数据并使用Mailer(或Mail facade)方法(例如sendraw,{{1等等。):

queue

但是,考虑到我想发送的电子邮件数量,这对我的需求来说太慢了。经过一些研究后,我发现Mailgun支持使用他们的API发送个性化的批量电子邮件。来自他们的网站:

  

批量发送

     

通过一次API调用,您最多可以发送1000封完全个性化的电子邮件。

     

Mailgun将正确汇编MIME邮件,并将邮件分别发送给您的每个用户。这使得发送大量电子邮件的速度更快,资源密集程度更低。

  • 我想知道Laravel是否支持以这种方式发送个性化批量电子邮件?我还没有设法在文档或代码中找到任何内容来支持这一点。
  • Laravel是否有可用于支持此功能的现有软件包?

当然,我可以直接使用Mailgun的API或使用任何可用的SDK来实现这一点,但只是想先检查一下Laravel是否支持它。

1 个答案:

答案 0 :(得分:3)

这是我如何解决相同的情况,因为我找不到任何现成的解决方案。

        $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("reply@address.com");
                    $message->recipientVariables($input['vars']);
                });
            $batch_subscribers = array();
            $batch_subscribers_data = array();
            $batch = 0;
        }