php - 如何在后台使用PHPMailer发送邮件?

标签 php email background phpmailer background-process

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/

相关文章:

PHP MySQL group by unix Timestamp 用于报告

email - From header 中的 Thunderbird 图标

ios - SwiftUI:获取动态背景颜色(暗模式或亮模式)

email - 如何在给定 Amazon SES 消息 ID 的情况下获取电子邮件正文?

ruby-on-rails - 如何或最佳方式运行while循环以避免API限制

objective-c - 如何显示基于 UIWindow 的暗色背景,如 UIAlertView?

php - 使用 mod_rewrite 替换查询字符串参数值

Javascript 函数多种形式

php - 在 PHP 中查询 mysql 并将数据导出为 CSV

python - 如何在 Django 中测试 send_mail?