如何提高PHP邮件发送效率?
How to improve the efficiency of PHP mail sending?
我正在使用 PHP 向 CakePHP 中的多人发送邮件。
我目前正在对包含邮件地址和姓名的收件人数组使用 foreach
并发送邮件。发送邮件需要相当长的时间,并且无法将收件人的邮件作为数组来完成,因为所有邮件之间存在微小的差异,例如收件人的姓名。
邮件使用相同的模板,但参数不同,请问有什么可以提高效率的吗?
更新:这是电子邮件模板
<?= $userSex ?> <?= $userName ?>, <br>
Thanks for ordering!<br>
Your order's ID is "<?= $orderID ?>".<br>
You can check the shipping status on our website.<br>
Thank you and hope you have a wonderful day.
这是代码。
$mail_list = {
[0]=>{
'userSex'=>'Miss',
'userName'=>'V',
'orderID'=>'xxxxxxxx'
},
[1]=>{
'userSex'=>'Mr.',
'userName'=>'Arasaka',
'orderID'=>'xxxxxxxx'
}
}
foreach($mail_list as $target) {
$email = new Email();
$email->viewBuilder()->setTemplate('notify_template');
$email->setEmailFormat('html')
->setSubject($subject)
->setViewVars([
'userSex' => $target['userSex'],
'userName' => $target['userName'],
'orderID' => $target['orderID'],
]);
$emailRes = $email
->setFrom(['no-reply@service.com' => 'service announence'])
->setTo($target['email'])
->setSubject($subject)
->send();
if (!$emailRes) {
$res = false;
break;
}
}
发送的每封邮件都略有不同。
有没有办法提高邮寄速度?
您的邮寄速度将取决于您配置的传输速度(参见 https://book.cakephp.org/3/en/core-libraries/email.html#using-transports)。
像这样按顺序发送电子邮件总是需要时间,而且通常在某种后台进程(如 cron 作业)中完成。
如果您真的需要比快速传输更快地发送电子邮件(对于订单和其他交易电子邮件,我对此表示怀疑),您可以研究其他选择。大多数电子邮件 API 服务提供某种方式来使用模板(例如 Sendgrid、Mandrill、Mailgun、Postmark 等)发送批量邮件
我正在使用 PHP 向 CakePHP 中的多人发送邮件。
我目前正在对包含邮件地址和姓名的收件人数组使用 foreach
并发送邮件。发送邮件需要相当长的时间,并且无法将收件人的邮件作为数组来完成,因为所有邮件之间存在微小的差异,例如收件人的姓名。
邮件使用相同的模板,但参数不同,请问有什么可以提高效率的吗?
更新:这是电子邮件模板
<?= $userSex ?> <?= $userName ?>, <br>
Thanks for ordering!<br>
Your order's ID is "<?= $orderID ?>".<br>
You can check the shipping status on our website.<br>
Thank you and hope you have a wonderful day.
这是代码。
$mail_list = {
[0]=>{
'userSex'=>'Miss',
'userName'=>'V',
'orderID'=>'xxxxxxxx'
},
[1]=>{
'userSex'=>'Mr.',
'userName'=>'Arasaka',
'orderID'=>'xxxxxxxx'
}
}
foreach($mail_list as $target) {
$email = new Email();
$email->viewBuilder()->setTemplate('notify_template');
$email->setEmailFormat('html')
->setSubject($subject)
->setViewVars([
'userSex' => $target['userSex'],
'userName' => $target['userName'],
'orderID' => $target['orderID'],
]);
$emailRes = $email
->setFrom(['no-reply@service.com' => 'service announence'])
->setTo($target['email'])
->setSubject($subject)
->send();
if (!$emailRes) {
$res = false;
break;
}
}
发送的每封邮件都略有不同。
有没有办法提高邮寄速度?
您的邮寄速度将取决于您配置的传输速度(参见 https://book.cakephp.org/3/en/core-libraries/email.html#using-transports)。
像这样按顺序发送电子邮件总是需要时间,而且通常在某种后台进程(如 cron 作业)中完成。
如果您真的需要比快速传输更快地发送电子邮件(对于订单和其他交易电子邮件,我对此表示怀疑),您可以研究其他选择。大多数电子邮件 API 服务提供某种方式来使用模板(例如 Sendgrid、Mandrill、Mailgun、Postmark 等)发送批量邮件