メールが本物かどうか、アクティブかどうか、安全に使用できるかどうかを確認する必要がある場合、Laravelのビルトインバリデーションルールでは不十分かもしれません。
今日は、Laravelのメールバリデーションの方法を、バリデーションメソッドの使用からカスタムバリデーションルールの作成まで、ステップバイステップでご紹介します。しかし、もっと簡単な方法をお探しの場合、つまり、フォーマット以外の部分もチェックする方法をお探しの場合、無効なメール、偽のメール、リスクのあるメールをリストから除外する、より良い選択肢も見つかります。
Laravelのメールバリデーションを行うには?

Laravelには、組み込みのEメール検証ルールと、特定のニーズに合わせてカスタム検証ルールを作成する機能があります。Laravelのメールバリデーションの設定、バリデーションエラーの処理、DNSとRFCバリデーションの実装について説明します。
#1 Laravelでvalidateメソッドを使用してメールを検証する
Laravelのvalidateメソッドは、IlluminateHttpRequestクラスで利用可能で、受信HTTPリクエストを簡単に検証できます。次の例は、コントローラメソッド内の基本的なメール検証ルールを示します。

このルールは何をするのか:
- required– フィールドを空にすることはできません。
- email:rfc,dns – EメールがRFC標準に従っているかどうかをチェックし、DNSレコードを使ってドメインを確認する。
バリデーションに失敗した場合、Laravelは自動的にユーザーをリダイレクトし、セッションにエラーメッセージを表示します。
#2 フォーム・リクエスト・バリデーションの利用でコードをよりクリーンに
フォーム・リクエスト・クラスは、バリデーション・ロジックをコントローラから切り離すのに役立ちます。このコマンドを実行します:

次に、app/Http/Requests/ 内の新しいクラスを更新します:

では、それを使うようにコントローラーをアップデートしてください:

このアプローチは、あなたのコードをよりクリーンにし、再利用可能にする。
#3 検証エラーメッセージのカスタマイズ
Laravelにはデフォルトのエラーメッセージがありますが、resources/lang/ja/validation.phpでカスタマイズできます:

または、フォームリクエストクラスの中です:

#4 カスタムのメール検証ルールを作成する
より高度なものが必要な場合は、カスタム検証ルールを作成してください:

app/Rules/ValidEmail.phpを更新しました:

コントローラ内部に適用する:

これにより、カスタムエラー処理と高度なバリデーションが可能になる。
#5 バリデーションエラーの処理
バリデーションが失敗した場合、Laravelは自動的にエラーを返します。Bladeでメッセージを表示するには

APIリクエストに対して、Laravelはエラーを含む422レスポンスを送信します:

#6 高度なメール検証DNSとMXレコード
電子メールのドメインを検証するには、DNS検証を使用します:

- rfc– 電子メールがRFC 5322に従っていることを確認します。
- dns– ドメインにMXレコードがあるかどうか(メールを受信できるかどうか)をチェックする。
カスタムDNSバリデーションでは、ルールを作成する:

app/Rules/DnsValidator.phpを更新:

コントローラ内部に適用する:

#7 JSON APIリクエストにおける電子メールの検証
APIリクエストに対して、リダイレクトの代わりにJSONレスポンスを返す:

Laravelは自動的に返します:

バリデーションを手動で処理する:

なぜLaravelでメールを検証するのは理想的ではないのでしょうか?
Laravelのメール検証には限界があります。それは、メールが正しいフォーマットに従っているかどうかをチェックするだけで、メールが本物かどうか、アクティブかどうか、安全に使用できるかどうかは検証しません。Laravelのビルトインバリデーションルールだけに頼ることが最良の選択でないかもしれない理由を説明します。
アドレス形式をチェックするだけである。
Laravelが提供するvalidateメソッドは、メールが正しく見えることを保証しますが、アドレスが存在するかどうかは確認しません。バリデーションのルールは、配信可能性ではなく、構造に焦点を当てています。つまり、無効なメールやタイプミス、あるいは偽のアドレスでも通過する可能性があるということです。
キャッチオール・アドレスやスパムトラップは対象外です。
Laravelのバリデーションメソッドは、すべての受信メッセージを受け入れるキャッチオールメールアドレス(有効かどうかを問わない)を検出しません。また、スパムトラップ(メールプロバイダーが古いメールリストや購入したメールリストを使用している送信者を捕捉するために使用する)もフィルタリングできません。これらのチェックがないと、あなたのメールリストは危険なアドレスでいっぱいになってしまいます。
実装にはコーディングの知識が必要
Laravelのメールバリデーションを設定するには、PHPファイルを操作し、PHP名前空間アプリ構造を使用し、カスタムバリデーションルールを記述する必要があります。Laravelの構文が苦手な場合、バリデーションルールを適用するのは難しいかもしれません。カスタムエラーメッセージも、バリデーションメソッドを使って手動で設定する必要があります。
自動化できない
Laravelは、フォーム送信以外のメールバリデーションの自動化をビルトインで提供していません。外部APIを統合するか、カスタム検証ルールを書いて動的にメールを検証する必要があります。カスタムエラーメッセージシステムを使用しても、手作業でバリデーションの失敗を処理すると、開発が遅くなる可能性があります。
Laravelで電子メールを検証する優れた方法
Laravelのメール検証ルールは基本的なフォーマットチェックには役立ちますが、クリーンで信頼性の高いメールリストを維持するには十分ではありません。メールが有効かどうかを確認するには、バウンスやスパムトラップのリスクなしに、メールが実際のユーザーに届くようにするツールの使用を検討してください。
_@64870 @_は素晴らしい解決策だ。

どのようにBouncerが電子メールを検証するか:
メールアドレスリストをアップロードして、あとはBouncerにお任せください:
- 構文と書式のチェック– 電子メールが適切な構造(例:name@example.com)に従っていることを確認します。
- ドメインとMXレコードのチェック– ドメインが存在し、電子メールを受信するように設定されたメールサーバーがあるかどうかを確認します。
- SMTP検証– Bouncer が受信者のメール・サーバーに(メールを送信せずに)接続し、受信箱が存在するかどうか、メッセージを受信できるかどうかを確認する。
- キャッチオールとスパムトラップの検出– すべての電子メール(無効なものも含む)を受け入れる、またはスパム送信者をトラップする危険なドメインを識別します。
- 有害性チェック– 使い捨て、一時的、既知の詐欺アドレスなど、潜在的に有害な電子メールにフラグを付けます。
Bouncer:Laravelのメール検証でカバーできないこと
Bouncerは、Laravelのビルトインバリデーションルールにはないもの、つまり単なるフォーマットのチェックを超えた真の検証を提供します。
メールが有効かどうかを確認するBouncerさん
Laravelアプリケーションは構文ベースのバリデーションに依存しています。Laravelが提供するvalidateメソッドは、メールが正しい構造に従っているかどうかをチェックするだけです。受信箱が存在するかどうかや、メールが到達可能かどうかはチェックしません。一方、Bouncerは、メールサーバーに接続して有効なメールアドレスを検証し、すべてのアドレスが本当にアクティブであることを確認します。
無効なメール、悪意のあるメール、有害なメールをキャッチします。
Laravelのバージョンアップにより、メールのバリデーションは改善されましたが、スパムトラップ、詐欺アドレス、キャッチオールドメインはまだ検出できません。BouncerのBouncerシールド機能は、無効なメールや悪意のあるメールを即座にブロックし、送信者の評判を傷つける危険なコンタクトからリストを保護します。
コーディング不要の自動検証
PHPファイルにカスタム検証ルールを記述することは、手動でロジックを設定し、検証失敗を処理し、カスタムエラーメッセージを定義することを意味します。Bouncerは、使いやすいプラットフォームとAPIによってこのような余分な作業を排除し、一括メール検証をシンプルにします。
配信可能性の洞察により、形式を超えたチェックを行う
Laravelのバリデーションルールは、”@”シンボルの欠落にフラグを立てることはできますが、メール配信可能性についての洞察を提供するものではありません。Bouncerは、受信トレイの配置をテストし、メール認証をチェックし、ブラックリストを監視して、メッセージが実際のユーザーに届くようにするDeliverability Kitを提供しています。
一括検証およびリアルタイム検証による精度の向上
Laravelアプリケーションは、コントローラ内の検証メソッドを使用して一度に1つのメールを処理します。しかし、Bouncerは一括検証をサポートしており、1回のリクエストで何千ものメールアドレスをクリーンアップすることができます。そのリアルタイムAPIは、新しいメールが即座に検証されることを保証し、無効なサインアップを防ぎ、バウンス率を減少させます。
👉コーディングなしで、ステップバイステップでメールアドレスを検証する方法をチェックしてください。
なぜLaravelのバリデーションではなく、Bouncerを選ぶのでしょうか?
- Laravelのバリデーション・メソッドは、メールが有効に見えることを保証します。Bouncerは実際に機能するかどうかを確認します。
- Laravelでは高度なチェックのためにカスタム・バリデーション・ルールが必要です。Bouncerはそれを自動的に行います。
- Laravelはスパムトラップ、キャッチオール、有害メールをブロックしません。Bouncerはブロックします。
- Laravelはバリデーションを実装するためにコーディングの知識が必要です。Bouncerはコーディング不要です。
- Laravelは配信可能性を検証しません。Bouncerは本当の洞察力で受信箱の配置を改善します。
クリーンで有効なEメールアドレスに依存しているビジネスには、Bouncerがより良い選択かもしれません。技術的に有効で配信可能な、適切な受信箱にメールが届くようになります。
結論
Laravelのメールバリデーションを使用する前に、このことを知っておく必要があります。偽メール、スパムトラップ、送信者の評判を傷つける危険なアドレスはキャッチできません。また、カスタムのバリデーションルールを設定するにはコーディングの知識が必要ですが、それでもLaravelは基本的なフォーマット以上の有効なメールアドレスを確認することはできません。
Bouncerは、より良い選択肢かもしれない。実際のメールを検証し、スパムトラップをブロックし、すべてのプロセスを自動化します。一括検証でもリアルタイムのメールチェックでも、Bouncerはあなたのメールが行き止まりではなく、実際の受信箱に届くことを保証します。
電子メールが正しく見えるかどうかだけでなく、それが動作するかどうかを 確認してください。今すぐ無料クレジットでBouncerをお試しください。

