【问题标题】:Sending Mails in a a foreach loop in Laravel在 Laravel 的 foreach 循环中发送邮件
【发布时间】:2015-09-16 20:18:44
【问题描述】:

我有这个要求,我需要从我的应用程序中向 TO 和 CC 标头中的所有用户发送单独的邮件。

例如,我在 TO 中添加 abc@xyz.com; asd@fgh.com,抄送 qwe@rty.com。这里有三个 email-id,TO 和 CC 的累积。

我需要向这三个人发送单独的邮件。因此,abc@xyz.com 只会在邮件标题中看到他的名字,对于抄送收件人,依此类推。

我的方法是将所有电子邮件合并到一个数组中,然后运行一个 foreach 循环,如下所示:

foreach($emails as $email) {
    Mail::send(..... 
    {
        $message->to($email);
    });
}

这是更好的方法吗?还是我可以遵循的其他更好的方法?

【问题讨论】:

  • 如果您有很多用户,那么在处理请求时同步执行此操作是个坏主意,因为它很可能会超时。邮件发送过程最好使用Mail::queuequeue。此外,如果您有很多用户,您可能需要考虑使用单独的服务来发送电子邮件,以避免尝试在短时间内发送大量邮件而可能出现的任何问题。
  • 我可以使用哪些单独的服务?
  • 那里有很多,这取决于您是否正在寻找免费服务。例如MailchimpSendgrid 有免费计划,允许您每月发送多达 12000 封电子邮件,或者您可以根据需要使用任何付费计划。你当然可以使用 Laravel 开箱即用的集成 MandrillMailgun

标签: php email laravel foreach


【解决方案1】:
if (!empty($users)) {
    foreach ($users as $user) {
        Mail::send('emails.acitvation', ['item' => $xyz, 'user' => $user],
            function ($message) use ($user) {
                $message->subject('your subject here');
                $message->to($user['email']);
            });
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2015-01-07
    • 2021-09-06
    • 2016-08-13
    • 1970-01-01
    • 2022-01-16
    • 2016-09-08
    相关资源
    最近更新 更多