【问题标题】:Laravel 5 - Sending group emailsLaravel 5 - 发送群组邮件
【发布时间】:2015-06-11 17:20:55
【问题描述】:

我正在使用 Mailgun 在我的 Laravel 5.1 应用程序中处理电子邮件。有时我需要一次向大量用户发送电子邮件,例如内部群组电子邮件和警报通知。到目前为止,我已经创建了一组收件人电子邮件地址,将电子邮件发送到网站管理员类型的地址,并将最终收件人包括在密件抄送中:

$recipients = [];

    foreach (User::emailRecipients()->get() as $user)
    {
        $recipients[] = $user->email;
    }

    $data['message'] = "Hello World";
    $data['recipients'] = $recipients;

    Mail::send('emails.group-email', $data, function($message) use ($data) {
        $message->to('support@demo.com')
            ->bcc($data['recipients'])
            ->subject('Test message');
    });

虽然这可行,但并不理想。对于初学者,我不能引用电子邮件中每个收件人独有的任何内容(例如自定义退订链接)。我不能在电子邮件提供商上使用某种邮件列表,因为收件人永远不会相同,这完全取决于几个因素。

下一个合乎逻辑的步骤是迭代每个电子邮件地址并在每次迭代中使用Mail::send。但这会导致 Mailgun 出现任何性能问题或 API 限制吗?一封电子邮件可能会发送给大约 200 个收件人。

【问题讨论】:

  • Mailgun 有一个 API,您可以使用它来即时创建邮件列表。 documentation.mailgun.com/api-mailinglists.html
  • @Chris 查看更新并告诉我您的想法。如果可能的话,我宁愿不使用邮件列表..
  • 我觉得不错。我为 Laravel 创建了一个 Mailgun 包,它以更像 Laravel 的语法提供这些 Mailgun 特定功能。 github.com/Bogardo/Mailgun。不幸的是,我还没有时间完成更新包以支持 Laravel 5,但我想我应该能够在本月的某个地方完成它。
  • 这个issue适用于你的方法,供参考。
  • 老兄,这太棒了,我希望我以前只使用 Mailgun 的 API。 100% 更好。

标签: php laravel laravel-5


【解决方案1】:

我没有使用 Laravel 内置的 Mail,而是选择直接使用 Mailgun 的 API(特别是批量发送)-mailgun/mailgun-php

$mailgun = new Mailgun('API-KEY');
$recipientVariables = [
        "someone@demo.com" => ['name' => 'Benny'],
        "someoneelse@demo.com" => ['name' => 'James']
    ];
$mailgun->sendMessage('demo.org', [
        "from" => 'support@demo.org',
        "to" => 'someone@demo.com, someoneelse@demo.com',
        "subject" => 'Cool Email',
        "html" => $content, // HTML from Blade template
        "text" => "Plain text message",
        "recipient-variables" => json_encode($recipientVariables)
    ]);

这还允许我访问我的电子邮件模板中的唯一收件人变量,如下所示:

<h1>Hello, %recipient.name%</h1>

我已经通过 CSS 内联器传递了我的 Blade 模板,这会将其转换为纯 HTML,所以这非常有效。

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2016-06-23
    相关资源
    最近更新 更多