C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でメールアドレスを検証する方法|MailAddressクラスと正規表現の使い方

C#でメールアドレスの形式が正しいかどうかを検証するには、いくつかの方法があります。代表的なのは、System.Net.Mail 名前空間の MailAddress クラスを使う方法と、System.Text.RegularExpressions 名前空間の Regex クラスで正規表現によるパターンマッチングを行う方法です。

メールアドレス検証に使える2つの名前空間

System.Net.Mail

System.Net.Mail 名前空間には、電子メールをSMTP(Simple Mail Transfer Protocol)サーバーへ送信して配信するためのクラス群が含まれています。この中の MailAddress クラスを利用すると、文字列がメールアドレスとして有効かどうかを簡単にチェックできます。

System.Text.RegularExpressions

System.Text.RegularExpressions 名前空間は、不変(イミュータブル)な正規表現を表すクラスを提供します。Regex クラスとあらかじめ定義したパターンを使うことで、メールアドレスの形式を柔軟に検証できます。

メールアドレス検証でよく使われる正規表現パターンは以下の通りです。

@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"

方法1:MailAddressクラスを使った検証例

まずは System.Net.Mail 名前空間の MailAddress クラスを使う方法です。コンストラクタに無効なメールアドレスを渡すと例外がスローされる仕組みを利用し、さらにホスト名に「.」が含まれているかどうかも確認することで、より厳密な検証が可能になります。

サンプルコード

using System;
using System.Net.Mail;

namespace DemoApplication {
   class Program {
      public static void Main() {
         try {
            string email = "hello@xyzcom";
            Console.WriteLine($"The email is {email}");
            var mail = new MailAddress(email);
            bool isValidEmail = mail.Host.Contains(".");
            if (!isValidEmail) {
               Console.WriteLine("The email is invalid");
            } else {
               Console.WriteLine("The email is valid");
            }
            Console.ReadLine();
         }
         catch (Exception) {
            Console.WriteLine("The email is invalid");
            Console.ReadLine();
         }
      }
   }
}

実行結果

上記コードの出力は以下のようになります。「hello@xyzcom」のようにホスト部分にドットが含まれていないため、無効と判定されます。

The email is hello@xyzcom
The email is invalid

方法2:正規表現(Regex)を使った検証例

次に、正規表現を使ってメールアドレスを検証する方法を見ていきましょう。Regex クラスにパターンを指定し、IsMatch メソッドで入力文字列がパターンに一致するかどうかを判定します。

サンプルコード

using System;
using System.Text.RegularExpressions;

namespace DemoApplication {
   public class Program {
      public static void Main() {
         string email = "hello@xyz.com";
         Regex regex = new Regex(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$",
            RegexOptions.CultureInvariant | RegexOptions.Singleline);
         Console.WriteLine($"The email is {email}");
         bool isValidEmail = regex.IsMatch(email);
         if (!isValidEmail) {
            Console.WriteLine("The email is invalid");
         } else {
            Console.WriteLine("The email is valid");
         }
         Console.ReadLine();
      }
   }
}

実行結果

上記コードでは「hello@xyz.com」が正しい形式のため、有効と判定されます。

The email is hello@xyz.com
The email is valid

どちらの方法を選ぶべき?

MailAddress クラスを使う方法は実装がシンプルで、基本的な形式チェックには十分です。一方、正規表現を使う方法は、独自のルール(特定のドメインのみ許可するなど)を細かく定義したい場合に適しています。用途に応じて使い分けるとよいでしょう。ただし、どちらの方法でも実際にメールを受信できるかまでは確認できないため、確実性が必要な場合は確認メールの送信なども組み合わせることをおすすめします。

  1. 一時的なメールアドレスを作成する方法|Apple「メールを非公開」機能の使い方

    「Bccアドレスフィールドを表示」を選ぶか、Option(Alt)+Command+Bを押すだけでBcc欄が表示されます。これで、他に誰へ送信したかが相手に知られない安心感が得られます。 しかし、今多くの人が知りたいのはおそらくそれではありません。現代のメールにおける最大の問題は、メールアドレスが悪意ある第三者の手に渡り、気づけば受信箱がスパムでいっぱいになっていることです。 受信箱に届くスパムやフィッシングメールを減らす最善の方法は、企業にむやみに自分のメールアドレスを渡さないことです。そうすることで、アドレスが流出・売却されたり、不正利用されたりするリスクを大幅に減らせます。 一時的なメー

  2. iPhoneにメールアドレスを追加する方法【自動・手動設定の手順を解説】

    Appleのデバイスには標準で「メール」アプリが搭載されており、好きなメールアドレスを自由に追加できます。しかも、複数のメールアドレスを追加しても、Apple IDを使っている他のデバイスと自動的に同期されるのが便利なポイントです。この記事では、iPhoneにメールアドレスを追加する方法を、自動設定と手動設定の2つのパターンに分けて詳しく解説します。 新しいメールアカウントを自動的に追加する方法 iCloud、Exchange、Google(Gmail)、Yahoo!、AOL、Outlookなどの主要なメールサービスをお使いなら、アカウントを自動的に追加できます。所要時間は1分ほど。以下の