Laravel 5 - 发送群组电子邮件

时间:2015-06-11 17:20:55

标签: php laravel laravel-5

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

$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位收件人。

1 个答案:

答案 0 :(得分:3)

我选择直接使用Mailgun的API(特别是批量发送),而不是使用内置-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"EditItemSegue"]) { NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; Item *item = [[self fetchedResultsController]objectAtIndexPath:indexPath]; EditItem *destination = (EditItem *)segue.destinationViewController; destination.managedObjectContext=self.managedObjectContext; destination.toDoItem = item; } } 的Laravel - Mail

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)
    ]);

我已经通过CSS内联传递了我的Blade模板,将其转换为纯HTML,因此效果非常好。