CakePHP电子邮件组件检查是否发送电子邮件

CakePHP电子邮件组件检查是否发送电子邮件

问题描述:

我只是想知道如何检查电子邮件是否已发送,或者何时在CakePHP中使用EmailComponent时失败?CakePHP电子邮件组件检查是否发送电子邮件

比如我目前使用这种方式:

$this->Email->from='<[email protected]>'; 
$this->Email->to='<[email protected]>'; 
$this->Email->sendAs='both'; 
$this->Email->delivery = 'debug'; 
$this->Email->send(); 
+2

为了得到正确的答案,你总是* *需要提供您正在使用CakePHP的版本! – mark 2013-03-27 10:51:03

$this->Email->send()应该返回true,如果它被成功发送。你可以尝试这样的:

if ($this->Email->send()) { 
    // Success 
} else { 
    // Failure 
} 

参考:

http://api.cakephp.org/2.3/class-EmailComponent.html

注:如果您使用CakePHP的2.x的,你可以尝试使用CakeEmail类代替; EmailComponent已被弃用(Reference)。如果你使用1.x然后继续。 :P

编辑:

如果你使用2.x的,你应该记住,CakeEmail(这是使用EmailComponent)可引发异常的意见如前所述,。您可以CakePHP itself或在一个try/catch折腾处理:

try { 
    if ($this->Email->send()) { 
     // Success 
    } else { 
     // Failure, without any exceptions 
    } 
} catch (Exception $e) { 
    // Failure, with exception 
} 
+1

这不应该需要一个try catch块吗?由于它可能会引发异常......文档指出:“我们建议您使用try/catch来确保您的消息正确传递。” – mark 2013-03-27 09:48:18

+0

@mark你能指出那个文档吗?你可能有一个有效的点,但我找不到。如果我查看源代码,EmailComponent自身似乎不会自行抛出异常。 – thaJeztah 2013-03-27 10:39:53

+0

电子邮件组件只是包装了CakeEmail的send()函数。因此它也会抛出异常,如果没有正确捕捉,会产生很多麻烦。它也在这里:http://book.cakephp.org/2.0/en/core-libraries/components/email.html – mark 2013-03-27 10:50:11