Fuelphpでメール送信時のエラーキャッチを「EmailValidationFailedException」「EmailSendingFailedException」だけでよいのかなって思っていたけど、SMTPサーバーに接続できないときの例外エラーはキャッチされなかった。
っということでメール送信時に
$email = Email::forge(array(必要な内容を記述)); try { $email->send(); } catch(\EmailValidationFailedException $e) { // バリデーションが失敗したとき echo = 'メールアドレスが正しくないため送信できませんでした。:'.$e->getMessage(); } catch(\EmailSendingFailedException $e) { // ドライバがメールを送信できなかったとき echo 'メール送信に失敗しました。:'.$e->getMessage(); } catch (\Exception $e) { echo = 'メール送信時のその他のエラーが発生しました。:'.$e->getMessage(); }
「Exception」をcatchを付けてそれ以外のエラーをキャッチすることにした。
どのクラウドサービスだって停止することあるんだから、SMTPサーバーへのConnectエラーも考慮しなければならない。
初期のままSMTPを利用していると
「ot an unexpected response from host on command: [MAIL FROM:<メールアドレス>] expecting: 250 received:」
となってメールが送れなくなる
以下のようにemailドライバーのSMTPの部分を修正したほうが安全
https://github.com/fuel/email/commit/2eab3974e4c38b9fea0a7ebbad3d4e1f20076448