Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PhpMailer发送电子邮件,无需等待返回_Php_Phpmailer - Fatal编程技术网

使用PhpMailer发送电子邮件,无需等待返回

使用PhpMailer发送电子邮件,无需等待返回,php,phpmailer,Php,Phpmailer,我经常发电子邮件。很好用 但在某些情况下,我不想等待send函数返回,特别是因为它有时可能需要一段时间。我只想马上发送并完成该功能 有可能做到这一点吗 这是我正在使用的示例代码(与基础代码没有什么不同) 您不需要使用ajax或配置自己的排队系统来实现这一点。只需使用一个本地邮件服务器——它隐含着一个内置的排队系统,您不需要配置它——您就可以在几分之一秒内向它提交邮件。这里有一些性能建议。就像jeroen提到的,您应该使用队列来实现这一点。如果您曾经将cron配置为与PHP一起工作,那么它的原理与

我经常发电子邮件。很好用

但在某些情况下,我不想等待send函数返回,特别是因为它有时可能需要一段时间。我只想马上发送并完成该功能

有可能做到这一点吗

这是我正在使用的示例代码(与基础代码没有什么不同)


您不需要使用ajax或配置自己的排队系统来实现这一点。只需使用一个本地邮件服务器——它隐含着一个内置的排队系统,您不需要配置它——您就可以在几分之一秒内向它提交邮件。这里有一些性能建议。

就像jeroen提到的,您应该使用队列来实现这一点。如果您曾经将cron配置为与PHP一起工作,那么它的原理与此类似,只是它不会按计划重复相同的任务,而是在队列中逐个执行您提供的任何任务。您甚至可以为这些任务指定优先级。我建议你从豆茎开始

除非你通过ajaxI调用脚本,否则你需要等待。我认为避免这种情况的唯一方法是实现一个队列,将作业发送到那里,并让一个工作人员接收待处理的作业。这似乎可以通过将电子邮件发送到另一个线程来实现,例如,你是否介意解释(举例)如何执行?我正在使用的应用程序托管在共享托管服务上,它只用于单个电子邮件。例如:欢迎电子邮件,购买时,恢复密码等。您需要向您的ISP查询。它们可能会阻止直接出站SMTP,但应该允许您通过本地邮件服务器提交-查看是否可以使用
isSMTP()
Host='localhost'
isMail()
发送。共享主机是最坏的情况,但它的限制非常严格,您不应该期望任何事情进展得特别快,也不能安装适当的排队系统。
try {
    $mail = new PHPMailer(true);
    $mail->isSMTP();
    $mail->SMTPDebug = 0;
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = 'tls';
    // ...other options...
    $mail->send();

    return true;
} catch (Exception $e) {
    return $e;
}