System.Net.Mail.MailMessage.Subject に改行込の値を設定したい

ActionMailer? の使い方ってどうなんでしょうね - お だ のスペース のコメントで書いた

=?iso-2022-jp?B?PT91dGYtOD9RPz1lMz04MT05Mz1lMz04Mj04Yz1lMz04MT0=?=
=?iso-2022-jp?B?YWY9ZTM9ODE9YjI9ZTM9ODE9YTk9ZTM9ODE9ODQ/PQ==?=

を実際に検証するために、.NET の SmtpClient でメールを送信してみた。

using System;
using System.Text;
using System.Net.Mail;

class Program
{
  static void Main(string[] args)
  {
    var enc = Encoding.GetEncoding("iso-2022-jp");
    var buf = new StringBuilder();

    buf.AppendFormat("=?iso-2022-jp?B?{0}?=", Convert.ToBase64String(enc.GetBytes("=?utf-8?Q?=e3=81=93=e3=82=8c=e3=81=")));
    buf.AppendLine();
    buf.AppendFormat("=?iso-2022-jp?B?{0}?=", Convert.ToBase64String(enc.GetBytes("af=e3=81=b2=e3=81=a9=e3=81=84?=")));

    var client = new SmtpClient("SMTPサーバー", 25);
    var msg = new MailMessage("Fromアドレス", "Toアドレス");
    msg.Subject = buf.ToString();
    client.Send(msg);

  }
}

このコードだと、MailMessage.Subject に設定する際に例外が発生します。改行コード込の文字列は、Subject に設定出来ないようです。
これはどうすればよいのかというと、改行コードでは無くスペースを入れてあげる事によって実際のメールでは改行が入るようになっているみたいです。
※公式のソースは知りません。あくまでも体験談です。
なので、以下の様に書きかえると MailMessage.Subject に設定出来て、メールも飛ばせます。

using System;
using System.Text;
using System.Net.Mail;

class Program
{
  static void Main(string[] args)
  {
    var enc = Encoding.GetEncoding("iso-2022-jp");
    var buf = new StringBuilder();

    buf.AppendFormat("=?iso-2022-jp?B?{0}?=", Convert.ToBase64String(enc.GetBytes("=?utf-8?Q?=e3=81=93=e3=82=8c=e3=81=")));
    buf.Append(" ");
    buf.AppendFormat("=?iso-2022-jp?B?{0}?=", Convert.ToBase64String(enc.GetBytes("af=e3=81=b2=e3=81=a9=e3=81=84?=")));

    var client = new SmtpClient("SMTPサーバー", 25);
    var msg = new MailMessage("Fromアドレス", "Toアドレス");
    msg.Subject = buf.ToString();
    client.Send(msg);

  }
}

実際に受信したメールのヘッダはこちら(一部抜粋)

Subject: =?iso-2022-jp?B?PT91dGYtOD9RPz1lMz04MT05Mz1lMz04Mj04Yz1lMz04MT0=?=
 =?iso-2022-jp?B?YWY9ZTM9ODE9YjI9ZTM9ODE9YTk9ZTM9ODE9ODQ/PQ==?=

ちゃんと改行されてますね。