System.Net.Mail で「user..name@domain.com」や「user.@domain.com」の扱いについて
今回は System.Net.Mail がサポートしているメール アドレスの形式についてご紹介いたします。
System.Net.Mail では RFC 2821 / RFC 2822 に準拠したメール アドレスをサポートするよう実装されております。
RFC 2821 / RFC 2822 に準拠していないメール アドレスを指定してメールを送信しようとすると FormatException の例外が発生いたします。
近年では RFC に準拠したメール アドレスのみを扱うシステムが多くなりましたが、一部の携帯端末では以下のように @ の直前にピリオドがあるメール アドレスやローカル パートにピリオドが 2 個以上連続するメール アドレスなど RFC に準拠していないメール アドレスが引き続き利用されています。
user.@domain.com
user..name@domain.com
.NET Framework 3.5 以前では上記のメール アドレスに対してメールを送信するには以下のようにローカル パートをダブル クォーテーション ("") で囲んで RFC に準拠したメール アドレスとして扱うのが唯一の方法となっておりました。
ただし、ローカル パートをダブル クォーテーションで囲んだメール アドレスをどのように解釈するかはシステムの実装に依存するため、通信相手によっては期待した通りに処理されない場合もございました。
"user."@domain.com
"user..name"@domain.com
.NET Framework 4 では @ の直前にピリオドがあるメール アドレスやローカル パートにピリオドが 2 個以上連続するメール アドレスも拡張してサポートするようになりました。
.NET Framework 4 でサポートされているメール アドレスの形式は以下の MSDN にも掲載されておりますのでご確認ください。
Title: MailAddress Class
URL: https://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx
RemarksThe MailAddress class supports the following mail address formats:・A simple address format of user@host. If a DisplayName is not set, this is the mail address format generated.・A standard quoted display name format of "display name" <user@host>. If a DisplayName is set, this is the format generated.・Angle brackets are added around the User name, Host name for "display name" user@host if these are not included. ・Quotes are added around the DisplayName for display name <user@host>, if these are not included.・Unicode characters are supported in the DisplayName. property. ・A User name with quotes. For example, "user name"@host.・Consecutive and trailing dots in user names. For example, user...name..@host.・Bracketed domain literals. For example, <user@[my domain]>.・Comments. For example, (comment)"display name"(comment)<(comment)user(comment)@(comment)domain(comment)>(comment). Comments are removed before transmission. |
- 注意事項
ローカル パートをダブル クォーテーションで囲んだメール アドレスは RFC に準拠した形式となりますが、.NET Framework 3.5 以前では一部不具合により FormatException が発生いたします。.NET Framework 3.5 以前の環境でローカル パートをダブル クォーテーションで囲んだメール アドレスを利用するには KB 947323 の Hotfix を適用する必要がありますのでご注意ください。
ID: 947323
Title: FIX: You receive a FormatException message when you use the System.Net.Mail class to send e-mail in the .NET Framework 2.0
URL: https://support.microsoft.com/kb/947323/en-us