我正在使用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位收件人。
答案 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,因此效果非常好。