21

IsBodyHtmlC# 経由でいくつかの電子メールを送信することをテストしていますが、設定がどのような影響を与えるかわかりませんtrue。値に関係なく、Body で送信したものはすべて「text/plain」のコンテンツ タイプで表示され、HTML にはタグとすべてがメール クライアント (gmail) に表示されます。そのフラグは実際に何をすることになっていますか?

注: AlternateView「text/html」のコンテンツ タイプを作成することで、HTML メールを問題なく送信できます。本文の設定がどのように機能するかを理解したいだけです。

4

3 に答える 3

21

以下は、私が毎日使用している SMTP ヘルパーの抜粋です....

public bool SendMail(string strTo, string strFrom, string strCc, string strBcc, string strBody, string strSubject)
{

    bool isComplete = true;

    SmtpClient smtpClient = new SmtpClient();
    MailMessage message = new MailMessage();

    try
    {
        //Default port will be 25
        smtpClient.Port = 25;

        message.From = new MailAddress(smtpEmailSource);
        message.To.Add(strTo);
        message.Subject = strSubject;

        if (strCc != "") { message.Bcc.Add(new MailAddress(strCc)); }
        if (strBcc != "") { message.Bcc.Add(new MailAddress(strBcc)); }

        message.IsBodyHtml = true;

        string html = strBody;  //I usually use .HTML files with tags (e.g. {firstName}) I replace with content.  This allows me to edit the emails in VS by opening a .HTML file and it's easy to do string replacements.

        AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));

        message.AlternateViews.Add(htmlView);


        // Send SMTP mail
        smtpClient.Send(message);
    }
    catch
    {
        isComplete = false;
    }

    return isComplete;
}

[アップデート]

私が最初に中断した重要なポイント...

  1. IsBodyHtml は、メッセージが HTML 形式であることを示しています。HTML の 1 つのビューのみを送信する場合は、これで十分です。

  2. AlternateView は HTML を保存するために使用されます。これは HTML メッセージの送信には必要ありませんが、受信者が HTML をレンダリングできない場合に備えて、HTML とプレーン テキストを含むメッセージを送信する場合に必要です。

上記のplainViewを取り出したので、これは明らかではありません、申し訳ありません...

ここで重要なのは、HTML 形式のメッセージを送信する場合は、IsBodyHtml = true (デフォルトは false) を使用して、コンテンツを HTML としてレンダリングする必要があることです。

于 2010-04-01T06:34:00.530 に答える
16

私はちょうどこの同じ問題に取り組んだ。私の最善の解決策は、オブジェクトのBodyプロパティをまったく設定しないことでした。MailMessage代わりに、2 つの を追加するだけAlternateViewです。最初はプレーン テキスト、次に HTML です。MIME 標準では次のように規定されているため、プレーン テキスト バージョンを最初に追加してください。

形式は、オリジナルにどれだけ忠実であるかの順に並べられており、最も忠実でないものが最初に、最も忠実なものが最後になります。

つまり、プレーン テキスト バージョンを最初に配置するため、クライアントは可能であれば HTML バージョンを使用する必要があります。

于 2010-06-19T00:42:15.783 に答える