質問: new MimeKit.MimeMessage(); Mimemes.Headers.Add(HeaderId.Subject, checd, "subject件名"); ``` 文字コードの変換はできるのですが、 このままメールの送信を行うと、エンコードの変換は自動的にBase64に設定されてしまいます。 (また、なぜかsubject項目が二つ出来上がります・・・。片方は空です。) 何かsubjectのエンコードを変更する方法はないでしょうか? どうぞご教授御願い致します。
回答: 複数行に及ばない例での変換方法 件名が長く、分割しない場合は、文字列の段階で分割する必要があります。 また、この解決方法は完全ではありません。 文中に記号などが入ると変換できなくなってしまう問題点があります そちらは別途質問させていただこうと思っています。 中途半端な自己解決ではありますが、いかが解決コードになります。 ``` MimeKit.Encodings.Base64Encoder ed = new MimeKit.Encodings.Base64Encoder(); System.Text.Encoding charEcd = System.Text.Encoding.UTF8; sub = sub + "\n\r"; // 文末が1文字切れてしまうための対策です。(何故でしょう) byte[] cc = charEcd.GetBytes(sub); byte[] nnn = new byte[1000]; // 大きめにバイト領域を用意しています。 ed.Encode(cc, 0, cc.Length, nnn); string ttt = System.Text.Encoding.UTF8.GetString(nnn); m_subject = string.Format("=?{0}?B?{1}?=", charEcd.BodyName, ttt.TrimEnd('\0')); Mimemes.Headers.Add(HeaderId.Subject, m_subject); ``` 最後の1行で件名を設定しています。 ただし前述した通り、途中に記号などが入ると変換できなくなってしまうため、不完全です。 ひとまずではありますが、有難うございました。