PHPMailers 在从 gmail 帐户发送电子邮件方面做得很好。但这需要相当多的时间,并且在发送电子邮件之前页面不会显示响应。有什么方法可以在后台发送电子邮件,以便我可以为用户提供更好的用户体验?谢谢!
最佳答案
使用电子邮件队列和php exec()是最好的方法之一。
它会在需要时触发(避免使用 CRON),速度很快,因为它被称为后台,并且是即时的。
<强>1。电子邮件队列。 使用插入获取表的 MySQL 中的所有字段,例如:
$queryIN="INSERT INTO email_queue (date,subject,body,destination,idle) values (...)";
mysql_query($queryIN);
这很重要,因为您需要一个独立的后台进程,因此注册和审核所有外发电子邮件也是一个好主意。
<强>2。 PHP exec()。 插入 MySQL 后是时候调用外部执行了:
exec("wget -qO- http://example.com/index.php?process_email_queue=1 &> /dev/null &");
- 请注意,需要来自 wget
-q0-
和&> .../dev/null &
的选项来抑制输出并作为后台进程调用。
<强>3。用于处理队列调用的相同脚本文件 index.php 或其他文件:
这样,它将调用我们的 index.php(您可以使用其他名称的文件),并处理传出:
if ($_GET['process_email_queue']==1) { ...code for sending idle emails queue... }
也许您必须为 exec()
修改一些 php.ini 选项,这没什么大不了的。
一旦一切正常运行,您将提供更好的网络导航和电子邮件处理,以实现快速响应和零等待。
在某些情况下,您将从等待直接电子邮件 2.60 秒缩短到 queue-exec-background 0.024 秒,速度提高了 11 倍。
关于php - 如何在后台使用PHPMailer发送邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23191522/