【问题标题】:Personalised batch email with Mailgun in Laravel在 Laravel 中使用 Mailgun 进行个性化批量电子邮件
【发布时间】:2016-12-09 02:57:39
【问题描述】:

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

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

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

【问题讨论】:

  • 几个月前我也在寻找同样的东西,但找不到任何现成的解决方案,所以我最终自己编写了这个函数。虽然使用 Mailgun 批处理真的很简单。
  • 感谢您的回复。真可惜。您介意发布答案并可能包括您如何实现它吗?如果我没有收到更多回复,我可以接受。
  • 我在我的 Symfony 应用程序中使用 Swiftmailer Mailgun bundleSending Emails in Batch with swiftmailer 来处理这样的事情。如果你可以在你的 Laravel 应用程序中使用这个包,你不应该再看下去了。

标签: php laravel email mailgun bulk-email


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

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 2015-09-15
    • 2018-09-05
    • 2017-02-25
    • 2017-10-12
    • 2020-08-07
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多