箱庭ハーブblog

7年目プログラマの趣味の小部屋

メールの文字化け対策(.NETのSystem.Net.Mail編)

メール 文字化け Qエンコード base64、Base64、BASE64

メールの本文は、htmlとは違った文字化け問題を抱えています。
1つは、Qエンコード-Base64問題
もう1つは、8bit or 7bit問題
今回はメール特有の文字化け問題の一つ、Qエンコード/Base64の解決策。

System.Net.Mailを利用したメール送信は、日本人は悲しみを背負います。
メールのタイトルのエンコード形式がQエンコード固定で、変更できません。
MailMessageインスタンスのSubjectは、64変換済みにしてから設定するのが無難。
例えばShift_JISならば、
タイトルのヘッダを
=?iso-2022-jp?Q?=

=?iso-2022-jp?B?{0}?=
に変えて、元の文字はSHIFT_JISにエンコードしたあと、Base64に更に変換します

        '題名
        If encode.CodePage = 50220 Then 'iso-2022-jpつまりシフトJISならば
            mm.Subject = String.Format(
                "=?iso-2022-jp?B?{0}?=",
               Convert.ToBase64String(System.Text.Encoding.GetEncoding("iso-2022-jp").GetBytes(sSubject)))
        Else
            mm.Subject = sSubject
            mm.SubjectEncoding = encode
        End If
 
         '本文
        mm.Body = sBody
        mm.BodyEncoding = encode

だいたいこんな感じ。
突貫工事なので、UTF-8やEUC-JPでどう挙動するか調べてないのです。
本当なら、タイトルは問答無用でQから64に変えるべきかも。。。
コメント
PAGETOPへ

コメント送信

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード

パスワードを入れておかないと、コメントの再編集ができません!

フリーエリア

takemori
Twitter : @takemori_kondo

1. Unityと戯れてます
2. Cake3は劣化じゃないRails

iOS
coming soon...

Windows
Html Editor - Nazuna
Managed DirectX サンプル集

beginning since
2006.08.17
renewaled on
2011.06.03

最新コメント

[2013/06/14 ミューネ]
[2012/08/30 ノートPC]