有没有办法减少PHP Mail()的电子邮件延迟

时间:2018-12-29 12:27:35

标签: php email

我正在使用快速竞争网站,并且正在尝试创建反馈消息传递系统。

我创建了以下功能,用于组织用于发送电子邮件的模板以及随附的标头。

send_email.php

<?php
function send_email($to,$from,$title,$sending_message){

$message="<html><body>";
$message.=$sending_message;
$message.="</body></html>";

$headers = "From: ". $from . "\r\n";
$headers .= "Reply-To: ". $from ."\r\n";
$headers .= "Return-Path:".  $from . " \r\n";
$headers .= "CC:\r\n";
$headers .= "BCC:\r\n";

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

return mail($to, $title,$message,$headers);

}

?>

在其他页面上,我使用以下代码include 'send_email.php',并使用函数send_email($to, $title,$message,$headers),它可以正常工作。唯一的问题是,接收电子邮件的时间过长,或者本质上是任意的。

有时候,我会通过发送3封电子邮件来测试反馈系统。例如:Email1,Email2,Email3按以下顺序发送。有时候,我收到的电子邮件3优先于电子邮件1,或者电子邮件2优先于电子邮件3。

就时间而言,有时我会在几分钟内收到电子邮件,但有时会在几小时内收到电子邮件,这使测试变得很困难,因为直到几小时我才知道代码的结果,这使我感到困惑想知道我的代码是否有效。

注意:

  • 通过使用以下代码echo "<p>". error_get_last()['message'] . "</p>";,我可以确定该功能确实已成功运行。

    • 我尝试同时使用AJAX请求和表单提交进行测试,但发现通常表单提交花费的时间更少。 (尽管我喜欢AJAX请求的概念,而无需更改页面)

我的问题是,有没有办法减少接收电子邮件的时间?还是有更好的方法来解决此问题?

1 个答案:

答案 0 :(得分:1)

您在问自己一个问题,答案是真正的专用电子邮件提供商。

PHP不会通过mail()“发送”电子邮件。 PHP委托运行SMTP的服务器或服务器上的sendmail;从那里开始,每种途径都有额外的延迟:

  • 取决于提供sendmail的软件版本,您的邮件可能会进入队列,以便稍后处理/发送
  • 取决于SMTP服务器,该队列也可能存在于此
  • 收件人SMTP服务器可能具有自己的处理要求和规则集,这可能会导致更多延迟。

您看到的AJAX和/或表单提交之间的“延迟”差异不是由于您使用请求的方法引起的。它们完全取决于统计信息和基础队列。

切换并有效地“外包”(不是,但这是最接近的词),您向第三方发送的出站电子邮件功能将为您提供一些清晰的信息以及许多其他功能。大多数功能还可以使您看到电子邮件被延迟/未发送/退回,这是另一个重要的优势。而且,公平地说,它也很便宜。