Cakephp PHP mail()未发送,但未引发异常

Cakephp PHP mail()未发送,但未引发异常,cakephp,smtp,cakephp-2.0,php,Cakephp,Smtp,Cakephp 2.0,Php,我正在使用CakePHP发送电子邮件。我的控制器代码如下所示: if ($this->User->save($this->request->data)) { $email = new CakeEmail(); $email->from(array('noreply@mydomain.com' => 'My Domain')); $email->to($this->

我正在使用CakePHP发送电子邮件。我的控制器代码如下所示:

        if ($this->User->save($this->request->data)) {
            $email = new CakeEmail();
            $email->from(array('noreply@mydomain.com' => 'My Domain'));
            $email->to($this->request->data['User']['email']);
            $email->subject('My Domain Confirmation');
            $email->replyTo('noreply@mydomain.com');
            $email->sender('noreply@mydomain.com', 'My Domain');
            $email->emailFormat('html');
            $email->template('confirmation');
            $email->send();
            $email->viewVars(array(
                'name' => $this->request->data['User']['username'],
                'id' => $this->User->getLastInsertID(),
                'code' => $this->request->data['User']['confirm_code']));
        }
我还包括在该控制器的顶部:
App::使用('CakeEmail','Network/Email')

如果我在$email->send()上打印,我会得到:

回音是“邮件已发送”,但实际上我的邮箱没有收到任何东西。我在
/var/spool/mail/root
中检查了我的文件,最后一封发送的电子邮件是2012年1月9日在同一台服务器上发送的。所以它以前确实有效。我最近刚升级到Cake 2.0,但这并不能解释为什么普通的ol'
mail()
不起作用


我还可以检查哪些其他调试方法,以确保不是我的服务器阻止发送电子邮件?

还可以检查防火墙设置。有时,如果不是来自特定来源,它会停止所有传出的smtp请求。

运行Cake应用程序的服务器可能需要(smtp)身份验证才能允许您发送任何内容,这是一种非常常见的配置

app/Config/email.php.default
文件复制到
app/Config/email.php
并调整它以匹配您的设置(通常它只是本地主机,您可以使用一个邮箱登录进行身份验证)

另请参见此主题。

PHP的mail()不会引发任何异常。您需要检查退货状态。如果这是假的,那么你的MTA不接受邮件。即使它返回true


查看/var/log/中的邮件日志。希望这些可以帮助您了解更多信息。

奇怪的是,这台服务器一直在从其他文件夹发送邮件(这是一个承载多个网站的VPS)。我只是想看看其他网站是否还能发送邮件,什么都没有。真奇怪。就像是关了门什么的。我认为这个问题源于MTA没有被设置(即使我认为是)。你有正确的smpt设置(端口,…)配置吗?你的MTA正在运行吗?如果没有,您将看到这种行为(以及启动它时发送的所有邮件)查看apache错误日志(但如果它在那里,您应该看到它)和邮件错误日志检查您的apache日志,并使您添加到PHP文件
ini_集(“display_errors”,“on”)的顶部;错误报告(E_全部)以确保您也收到通知和警告。根据您正在运行的MTA,postfix和sendmail经常使用。试试
/etc/init.d/postfix status
Array
(
    [headers] => From: My Domain
Reply-To: noreply@mydomain.com
X-Mailer: CakePHP Email
Date: Thu, 23 Feb 2012 00:40:00 -0800
Message-ID: <4f45fb60a0fc46cd926f305a32396397@mydomain.com>
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
    [message] => 



    Hi there,


Welcome to my site! While you can now vote on submissions and leave comments, your own submissions will be screened and not appear to the public until you click on the confirmation link below:

Click here to confirm your account

We hope to see you around and thanks for joining the community!
$to = "mytestemail@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>