如何在后台使用PHPMailer发送电子邮件?

use*_*065 8 php email background background-process phpmailer

PHPMailers在从Gmail帐户发送电子邮件方面做得很好.但这需要相当长的时间,在电子邮件发送之前,页面不会显示响应.有什么方法可以在后台发送电子邮件,以便为用户提供更好的用户体验?谢谢!

小智 11

使用电子邮件队列php exec()是最好的方法之一.

它会在需要时触发(避免使用CRON),它很快,因为它被称为背景,并且是立即的.

1.电子邮件队列. 使用插入来获取表的MySQL中的所有字段,例如:

$queryIN="INSERT INTO email_queue (date,subject,body,destination,idle) values (...)";
mysql_query($queryIN);
Run Code Online (Sandbox Code Playgroud)

这很重要,因为您需要一个独立的后台流程,因此注册和审核所有外发电子邮件也是一个好主意.

2. PHP exec(). 在MySQL中插入后是时候调用外部执行:

exec("wget -qO- http://example.com/index.php?process_email_queue=1 &> /dev/null &");
Run Code Online (Sandbox Code Playgroud)
  • 注意到,从wget的选择-q0-&> ... /dev/null &需要抑制输出,并呼吁作为后台进程.

3.相同的脚本文件index.php或其他用于处理队列调用:

这样,它将调用我们的index.php(您可以使用其他名称文件),并处理传出:

if ($_GET['process_email_queue']==1) { ...code for sending idle emails queue...  }
Run Code Online (Sandbox Code Playgroud)

也许你必须触摸一些php.ini选项exec(),这不是什么大不了的事.

一切正常运行后,您将提供更好的Web导航和电子邮件处理,以实现快速响应和零等待.

在某些情况下,您将从等待直接电子邮件2.60秒传递到queue-exec-background 0.024秒,这速度提高了11倍.


Sha*_*eel 0

您可以使用 AJAX 请求将数据发布到 PHP 脚本,然后该脚本将发送电子邮件。