2

したがって、.net の標準の電子メール API は、「代替ビュー」の使用をサポートしています。

http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.alternateviews.aspx

AlternateViews プロパティを使用して、さまざまな形式の電子メール メッセージのコピーを指定します。たとえば、HTML でメッセージを送信する場合、一部の受信者が HTML コンテンツを表示できない電子メール リーダーを使用している場合に備えて、プレーン テキスト バージョンを提供することもできます。

代替ビューを MailMessage オブジェクトに追加するには、ビューの Attachment を作成し、それを AlternateViews によって返されるコレクションに追加します。Body プロパティを使用してテキスト バージョンを指定し、AlternateViews コレクションを使用して他の MIME タイプのビューを指定します。MediaTypeNames クラス メンバを使用して、代替ビューの MIME タイプを指定します。

このアプローチはどの程度支持されていますか? テキストと HTML の両方の電子メール本文を定義する努力をする価値があるかどうか知りたいので、質問しています。

4

2 に答える 2

4

HTML とテキスト メール (ニュースレターなど) の両方を組み合わせるために常に使用します。実装するのはそれほど難しくないので、サポートを追加するだけです:

var mail = new MailMessage();

// TODO: Set up normal message such as recipient, reply address, etc

if (!string.IsNullOrWhiteSpace(plainBody))
{
    var plainView = AlternateView.CreateAlternateViewFromString(plainBody, null, "text/plain");
    mail.AlternateViews.Add(plainView);
}

if (!string.IsNullOrWhiteSpace(htmlBody))
{
    var htmlView = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html");
    if (linkedResources != null)
    {
        foreach (var linkedResource in linkedResources)
        {
            htmlView.LinkedResources.Add(linkedResource);
        }
    }

    mail.AlternateViews.Add(htmlView);
}

return mail;
于 2013-04-22T10:20:05.837 に答える