5

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

当然,这可以通过 Laravel 轻松实现,方法是遍历用户数据并使用 Mailer(或Mail外观)方法(例如send,rawqueue):

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 是否支持它。

4

1 回答 1

4

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

        $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;
        }
于 2016-08-03T13:59:27.903 回答