- 題名: auスマートフォンにメールした時の本文文字化け
- 日時: 2011/09/27 17:48:51
- ID: 29103
- この記事の返信元:
- (なし)
- この記事への返信:
- [29105] Re[1]: auスマートフォンにメールした時の本文文字化け2011/09/27 19:49:18
- ツリーを表示
メールメッセージは正しいけれども、スマートフォンのメーラーが正しく解釈 できない。または、メールメッセージの情報に齟齬があって、スマートフォン のメーラーが正しく解釈できない。そのあたりを突き詰める必要があるのだと 思います。 送信時のメールメッセージの情報に齟齬があるという特殊な状況を想定したば あいの話なのですが、プログラムですこし気になるところがあります。 Shift_JISを扱うEncodingオブジェクトのBodyNameプロパティはiso-2022-jpを 返します。AlternateView.CreateAlternateViewFromStringメソッドの引数に Encodingオブジェクトを指定するばあい、AlternateViewオブジェクトは EncodingオブジェクトのBodyNameプロパティを参照してメールメッセージの Charsetを出力します。 Dim textContent As String = "わんだほ" Dim sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS") Dim plainType As String = System.Net.Mime.MediaTypeNames.Text.Plain Dim textView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString _ (textContent, sjis, plainType) たとえば上記のようにAlternateViewを構成したばあい。 Content-Type: text/plain; charset=shift_jis Content-Transfer-Encoding: quoted-printable =82=ED=82=F1=82=BE=82=D9 期待される出力は上ですが、実際の出力は下です。 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: quoted-printable =82=ED=82=F1=82=BE=82=D9 本文がiso-2022-jpでエンコードされているということをcharsetは表しますが、 実際にはShift_JISで本文はエンコードされています。charsetと実際のエンコ ードの間に齟齬があります。 実際のエンコードにcharsetを合わせるか、または、charsetに実際のエンコー ドを合わせればよいと思います。 Dim textContent As String = "わんだほ" Dim textContentType As New System.Net.Mime.ContentType() textContentType.MediaType = System.Net.Mime.MediaTypeNames.Text.Plain textContentType.CharSet = "shift_jis" Dim textView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString _ (textContent, textContentType) Dim textContent As String = "わんだほ" Dim iso2022jp As System.Text.Encoding = System.Text.Encoding.GetEncoding("iso-2022-jp") Dim plainType As String = System.Net.Mime.MediaTypeNames.Text.Plain Dim textView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString _ (textContent, iso2022jp, plainType)
分類:[.NET]