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の開発が可能な社風に興味がある人は「て」のマークをクリック!

記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
@mikkameの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする