检查'连接超时'

时间:2014-10-23 19:28:00

标签: php cakephp frameworks cakephp-2.0 cakeemail

如果$ cake_email-> send()得到连接超时,我可以做一些检查的技巧吗?例如:如果我得到连接超时,我使用特定的setFlash警告用户关于超时并将他重定向到某个地方。

在我的情况下,电子邮件是可选,如果它发送:好!如果没有:没问题,只需要让用户知道这个

Actualy我正在使用 IF 检查是否有错误,但这并没有捕捉超时错误

$cake_email = new CakeEmail('gmail');
$cake_email->emailFormat('html');
$cake_email->to($dados['Requisitante']['email']);
$cake_email->template('atualizacaoRequisicao', 'default');
$cake_email->subject('ATUALIZAÇÃO DE REQUISICÃO');
$cake_email->viewVars(array('dados' => $dados));
if($cake_email->send()){
    $this->setFlash('A requisição foi salva e o email notificando a alteração foi enviado para '.$dados['Requisitante']['email'], 'flash_success');
} else {
    $this->setFlash('A requisição foi alterada, porém o email nao foi enviado', 'flash_info');
}

1 个答案:

答案 0 :(得分:0)

STLMikey的评论(try / catch)解决了我的问题!比我想象的要简单得多

我只是让我的实际代码放在这里以防其他人遇到同样的问题。

try {
    if($cake_email->send()){
        $this->setFlash('A requisição foi salva e o email notificando a alteração foi enviado para '.$dados['Requisitante']['email'], 'flash_success');
    } else{
        $this->setFlash('A requisição foi alterada, porém o email nao foi enviado', 'flash_info');
    }
} catch(Exception $ex){
    $this->setFlash('A requisição foi alterada, porém o email não foi enviado ('.$ex->getMessage().')<br>Você pode atualizar a requisição novamente para tentar reenviar o email', 'flash_info');
    return $this->redirect(array('action' => 'edit', $dados['Requisicao']['id']));
}