我正在使用快速竞争网站,并且正在尝试创建反馈消息传递系统。
我创建了以下功能,用于组织用于发送电子邮件的模板以及随附的标头。
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>";
,我可以确定该功能确实已成功运行。
我的问题是,有没有办法减少接收电子邮件的时间?还是有更好的方法来解决此问题?
答案 0 :(得分:1)
您在问自己一个问题,答案是真正的专用电子邮件提供商。
PHP不会通过mail()
“发送”电子邮件。 PHP委托运行SMTP的服务器或服务器上的sendmail
;从那里开始,每种途径都有额外的延迟:
sendmail
的软件版本,您的邮件可能会进入队列,以便稍后处理/发送您看到的AJAX和/或表单提交之间的“延迟”差异不是由于您使用请求的方法引起的。它们完全取决于统计信息和基础队列。
切换并有效地“外包”(不是,但这是最接近的词),您向第三方发送的出站电子邮件功能将为您提供一些清晰的信息以及许多其他功能。大多数功能还可以使您看到电子邮件被延迟/未发送/退回,这是另一个重要的优势。而且,公平地说,它也很便宜。