我希望将个性化批量电子邮件发送给大量用户。我的意思是,我想建立一个模板电子邮件,并在发送之前将每个用户的信息注入其中。
当然,使用Laravel循环访问用户数据并使用Mailer(或Mail
facade)方法(例如send
,raw
,{{1等等。):
queue
但是,考虑到我想发送的电子邮件数量,这对我的需求来说太慢了。经过一些研究后,我发现Mailgun支持使用他们的API发送个性化的批量电子邮件。来自他们的网站:
批量发送
通过一次API调用,您最多可以发送1000封完全个性化的电子邮件。
Mailgun将正确汇编MIME邮件,并将邮件分别发送给您的每个用户。这使得发送大量电子邮件的速度更快,资源密集程度更低。
当然,我可以直接使用Mailgun的API或使用任何可用的SDK来实现这一点,但只是想先检查一下Laravel是否支持它。
答案 0 :(得分:3)
这是我如何解决相同的情况,因为我找不到任何现成的解决方案。
$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;
}