0

$cake_email->send() が接続タイムアウトを取得するかどうかを確認するためにできるトリックがありますか?たとえば、接続タイムアウトが発生した場合、タイムアウトについてユーザーに警告する特定の setFlash を使用し、ユーザーをどこかにリダイレクトします。 .

私の場合、送信する場合、メールはオプションです。そうでない場合: 問題ありません。このことをユーザーに知らせる必要があります。

実際には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');
}
4

1 に答える 1

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']));
}
于 2014-10-23T21:09:29.113 に答える