2013-03-27 4 views
3

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

답변

10

$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

편집 : 당신 있습니다 당신이 (EmailComponent에 의해 사용되는) CakeEmail가 예외를 던질 수 염두에 두어야 2.X를 사용하는 경우, 코멘트에서 언급 한 바와 같이

. 당신은 CakePHP itself 또는 시도/캐치에 던지기하여 처리 할 수 ​​있습니다

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

try catch 블록이 필요하지 않아야합니까? 예외를 throw 할 수 있기 때문에 ... 설명서에 "메시지가 올바르게 전달되도록 try/catch를 사용하는 것이 좋습니다." – mark

+0

@mark 그 문서를 가리킬 수 있습니까? 유효한 포인트가있을 수 있지만 찾을 수는 없습니다. 원본을 들여다 보면 EmailComponent 자체가 예외를 던지지 않는 것처럼 보입니다. – thaJeztah

+0

전자 메일 구성 요소는 CakeEmail의 send()를 그냥 래핑합니다. 그러므로 예외를 던지므로 제대로 잡히지 않으면 상당한 문제가 발생할 수 있습니다. 또한 여기에 : http://book.cakephp.org/2.0/en/core-libraries/components/email.html – mark

관련 문제