确定电子邮件是否发送成功

4
大家好, 我有PHP发送电子邮件的标准邮件代码。
$to = $resultset['email_address'];
$subject = "New client inquiry from Website.com";
$message = $email_message;
$from = $your_email;
$headers = "From:" . $from;
mail($to,$subject,$message,$headers,"-f $from");

变量在我的代码中早已创建。然而,我想要检查的是确保邮件函数已成功执行。使用这段代码,我如何确定是否发送了电子邮件,如果没有,则输出“failure”?

1
如果(!mail($to,$subject,$message,$headers,"-f $from")){ echo "failure"; } 我觉得这个可行。 - jribeiro
1个回答

12

简单来说:PHP mail() 命令无法实现该功能。

mail() 函数的返回值只能表明邮件是否已成功传递给MTA,而不能表明邮件是否已发送。例如,如果您的MTA是postfix,并且postfix服务已停止,则mail()将愉快地返回true,因为将邮件排队到postfix中已经起作用了。但是,如果postfix没有手动启动(甚至正确配置),邮件将永远不会被发送。

如果您确实想要确保邮件已发送,需要通过套接字与MTA进行通信。有相应的框架可供使用。


1
通过提供的问题,您可以使用 $mail = mail($to,$subject,$message,$headers,"-f $from"); if (!$mail){echo "fail";} 检查您的 PHP 是否工作。但正如这个答案所说,您无法确定它是否实际发送了邮件。 - d-_-b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接