2013-04-10 68 views
5

Làm cách nào để kiểm tra xem việc gửi email trong CakePHP có thành công hay không?Kiểm tra xem việc gửi email có thành công/không thành công trong CakePHP không?

Tôi có thể gửi email không thành vấn đề nhưng tôi muốn có thể xử lý lỗi nếu không gửi được. Tôi có thể làm cái này như thế nào?

Đây là những gì tôi đã thực hiện cho đến nay:

$email = new CakeEmail(); 
$email->from(array('email' => 'title')); 
$email->to($to); 
$email->subject('Account activation');  
$activate_url = 'http://' . env('SERVER_NAME') .'/cakephp/users/activate/'.$id.'/'.$token; 
$message = "Thank you for signing up. Click on the activation link to activate your account \n"; 
return $email->send($message.$activate_url); 
+0

bạn có sử dụng cố gắng nắm bắt điều này không? –

+0

ở mức tốt nhất bạn có thể phát hiện xem thư đã được gửi đến máy chủ smtp đúng cách chưa. bạn KHÔNG thể trực tiếp phát hiện nếu máy chủ nhận (s) bị từ chối/spam email, hoặc nếu máy chủ smtp của bạn đã trì hoãn/xếp hàng đợi thư. –

Trả lời

9

Bạn có thể sử dụng một khối try catch để kiểm tra xem thư đã được trao cho thành công giao cho MTA, bạn có thể không thực sự phát hiện hoặc kiểm tra xem thư đã được gửi thành công đến người nhận. Đó là một trường hợp khác.

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

Cách khác nếu bạn đã đặt thư trả lời trong tiêu đề thư, bạn có thể chắc chắn rằng thư chưa được gửi.

Các vấn đề liên quan