BETA

Laravel 5.5+ でRFC違反のメールを送信できるようにするパッチを作成しました

投稿日:2018-10-17
最終更新:2018-10-24
※この記事は外部サイト(https://qiita.com/mikkame/items/0ff8cc888e...)からのクロス投稿です

背景

ガラケー全盛期、日本ではRFCに準拠しないメールアドレスを配布していました。
例えば次のようなメールアドレスです

これからメールアドレスを作る場合、上記のようなメールアドレスは作れなくなったようですが
昔からRFC違反のメールアドレスを使っているユーザーはそのままです。

このRFC違反メールアドレスにLaravelからメールを送信しようとすると Swift_RfcComplianceException という例外が発生します。
つまり、LaravelからRFC違反メールアドレスにはメールが送れないという事です。
しかし、それではリプレース案件や、中高年向けサービスで登録できないユーザーが一定数存在してしまう事になり、受託案件ではクレーム物です。

本題

Swiftmailerのコンテナに独自のバリデータを読み込ませる事ができたので紹介します。

\Swift::init(
  function () {
      \Swift_DependencyContainer::getInstance()
        ->register('email.validator')
        ->asSharedInstanceOf('クラスパス');
  }
);

これでバリデータを変更出来るようでしたので、Laravelの場合、 AppServiceProvidorのbootメソッドら辺に登録するとなんとかなります。
なお、バリデータは Egulias\EmailValidator\EmailValidator を継承している必要があります。

都度、これを書くのがめんどくさく感じたのでパッケージ化しましたので、めんどくさいと感じる人はお使いください。

https://github.com/tecpresso/laravel-allow-non-rfc-compliant-email-patch

仕様

  • とりあえず@が入っていればメールが送れる
  • Laravel 5.5 で動作確認済み(sendmail)
  • 実際に送れるかどうかはMTAによる。

P.S.

このパッケージ開発は業務時間中に行いました。
業務時間中にOSSの開発が可能な社風に興味がある人は「て」のマークをクリック!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@mikkameの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!