=?ISO-2022-JP?B?GyRCJE8kOCRhJF4kNyRGGyhC?=
のようなメールのSubjectをデコードするには、RFC2047の知識が必要になるでしょう。しかし、Base64形式のみ対応で、簡単なものであれば、次のような簡単なコード(メソッド)で実現できます。
''' <summary> ''' メールのサブジェクトをデコードする ''' </summary> ''' <param name="subject">デコードするメールサブジェクト</param> ''' <returns>デコードされた文字列</returns> Private Shared Function DecodeMailSubject(ByVal subject As String) As String '要素を分解する Dim s As String() = subject.Split("?"c) Dim b() As Byte If s(2) = "B" Then 'Base64形式の時 b = System.Convert.FromBase64String(s(3)) Else 'Base64形式のみ対応 Throw New Exception("未対応のエンコード形式です。") End If 's(1)をEncoding名として、デコードする Return System.Text.Encoding.GetEncoding(s(1)).GetString(b) End Function
/// <summary> /// メールのサブジェクトをデコードする /// </summary> /// <param name="subject">デコードするメールサブジェクト</param> /// <returns>デコードされた文字列</returns> private static string DecodeMailSubject(string subject) { //要素を分解する string[] s = subject.Split('?'); byte[] b; if (s[2] == "B") { //Base64形式の時 b = System.Convert.FromBase64String(s[3]); } else { //Base64形式のみ対応 throw new Exception("未対応のエンコード形式です。"); } //s[1]をEncoding名として、デコードする return System.Text.Encoding.GetEncoding(s[1]).GetString(b); }
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。