CakeEmailのメールアドレスチェックを回避する

標準

この記事はCakePHP2以降、2.4.0までを対象とした記事です。

CakePHP2からCakeEmailクラスにおいて、メールアドレスのセット時にValidation::email()を用いた検証が行われるようになりました。

これにより、国内の一部キャリアで使用されているRFC違反のメールアドレス(※1)をセットしようとした場合、例外としてSocketExpectionが発生します。

これらのメールアドレスへ送信しようとする場合、CakeEmailを継承したクラスを作成しメールアドレスのチェックを回避するか、検証用の正規表現を緩いものとする必要があります。

下記の例では、emailPatternメソッドを追加したCakeEmailの拡張クラスを作成し、メールアドレス検証用の正規表現を任意のものに変更できるようにしています。

利用方法については、テストコードを参考にしてください。
なお、同様の機能は、CakePHP 2.4.0以降で組み込まれる予定です。

※1 .fuck.do..como.@example.com のようにドットで始まる、連続したドット、ドットで終わるなどのメールアドレス

One Comment

  1. Pingback: CakePHP2.xでRFC準拠違反のメールアドレス宛にメール送信する方法。 | Wataame Frog

コメントを残す

Page optimized by WP Minify WordPress Plugin