Jon*_*hon 5 php email bulk-email laravel mailgun
我希望将个性化的批处理电子邮件发送给大量用户。我的意思是,我想设置一个模板电子邮件,然后在发送之前将每个用户的信息注入其中。
当然,这可以容易地与Laravel通过用户数据循环,并使用邮件程序(或者实现Mail门面)方法(如send,raw,queue等等):
foreach ($users as $user) {
$data = ['user' => $user];
$this->mailer->queue($views, $data, function($message) use($user) {
$message->to($user->email, $user->name);
});
}
Run Code Online (Sandbox Code Playgroud)
但是,考虑到我想发送的电子邮件数量,这对于我的需求来说太慢了。经过一些研究,我发现Mailgun支持使用其API发送个性化批处理电子邮件。从他们的网站:
批量发送
通过一个API调用,您最多可以发送1000个完全个性化的电子邮件。
Mailgun将正确组装MIME消息,并将电子邮件分别发送给每个用户。这使得发送大量电子邮件的速度大大加快,并且减少了资源消耗。
当然,我可以直接使用Mailgun的API或使用任何可用的SDK来愉快地实现此功能,但只想先检查一下Laravel是否支持它即可。
小智 4
这是我解决相同情况的方法,因为我找不到任何现成的解决方案。
$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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |