首页 文章

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

提问于
浏览
3

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

当然,通过循环用户数据并使用Mailer(或 Mail facade)方法(如 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发送个性化的批量电子邮件 . 从他们的网站:

批量发送使用单个API调用,您最多可以发送1000个完全个性化的电子邮件 . Mailgun将正确汇编MIME邮件并将邮件单独发送给您的每个用户 . 这使得发送大量电子邮件的速度更快,资源密集程度更低 .

  • 我想知道Laravel是否支持以这种方式发送个性化批量电子邮件?我没有设法在文档或代码中找到任何支持它的内容 .

  • Laravel是否有可用的现有软件包支持此功能?

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

1 回答

  • 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;
            }
    

相关问题