6

次のように text/html コンテンツ タイプ文字列を割り当てることにより、HTML 形式で電子メールを (Outlook に) 送信するとうまく機能します。

using (MailMessage message = new MailMessage())
{
  message.From = new MailAddress("--@---.com");
  message.ReplyTo = new MailAddress("--@---.com");
  message.To.Add(new MailAddress("---@---.com"));
  message.Subject = "This subject";
  message.Body = "This content is in plain text";
  message.IsBodyHtml = false;

  string bodyHtml = "<p>This is the HTML <strong>content</strong>.</p>";

  using (AlternateView altView = AlternateView.CreateAlternateViewFromString(bodyHtml,
    new ContentType(MediaTypeNames.Text.Html)))
  {
    message.AlternateViews.Add(altView);
    SmtpClient smtp = new SmtpClient(smtpAddress);
    smtp.Send(message);
  }
}

メールは Outlook (2003) で正しく HTML として認識されます。
しかし、リッチテキストを試してみると:

MediaTypeNames.RichText;

Outlook はこれを検出せず、プレーン テキストにフォールバックします。
電子メールをリッチ テキスト形式で送信するにはどうすればよいですか?

4

3 に答える 3

9

要するに、System.Net.Mail を使用してこれを簡単に行うことはできません。

Outlook のリッチ テキストは、SMTP ワールド (Exchange 外) で winmail.dat ファイルとして送信されます。

winmail.dat ファイルは TNEF メッセージです。そのため、winmail.dat ファイル (TNEF ルールにフォーマットされている) 内にリッチテキストを作成する必要があります。

しかし、それだけではありません。Outlook は圧縮された RTF の特別なバージョンを使用するため、RTF を winmail.dat ファイルに追加する前に、RTF を圧縮する必要もあります。

肝心なのは、これを行うのは難しいということです。クライアントが本当にこの機能を本当に必要としない限り、私はそれを再考します.

これは、.NET の数行のコードでできることではありません。

于 2010-01-22T13:55:13.823 に答える
1

以下のように、カレンダー ビューの前に別の代替ビューを追加することで、これを実現することもできます。

var body = AlternateView.CreateAlternateViewFromString(bodyHtml, new System.Net.Mime.ContentType("text/html"));
mailMessage.AlternateViews.Add(body);
于 2014-05-15T16:32:46.367 に答える