0

同様の質問で管理者によって閉じられた質問があります。私が探している解決策を詳細に説明しようとします:

まず、Windows コンソール アプリケーションを開発しようとしています。

発送頻度:月曜日から金曜日

ユーザー数: 5 から 20 まで

データの形式: 行が国、列がさまざまな種類の製品で、セルがその国の製品の売上を表す表

制限: サービス ユーザーは、pdf や Excel を使用したくないか、メールの本文に表示できる HTML 形式の添付ファイルを使用することを好みます。

現在、私は次のようなレポートをほぼ職人的に作成しています。

.....
var myStringBuilder = new StringBuilder("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
myStringBuilder.Append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">");
myStringBuilder.Append("</head><body>");
myStringBuilder.AppendLine();
myStringBuilder.Append("<table style=\"font-family: Calibri; text-align: right; font-size: x-small;\">");
myStringBuilder.AppendLine();
var header = new StringBuilder("<tr><th>a</th><th>CATEG1</th><th>CATEG2</th><th>CATEG3</th><th>CATEG4</th><th>TOTAL</th></tr>");
var line = new StringBuilder("<tr><td>a</td><td>b</td><td>c</td><td>z</td><td>e</td><td>f</td></tr>");
foreach (var a in _actuals)
        {
            line.Replace("a", a.CountryName);
            if(a.Segment.ToLowerInvariant().Equals("categ1")) {
               line.Replace("b", "[" + string.Format("{0:0,#}", a.LsvLcFact / 1000) + "]"); }
            else if (a.Segment.ToLowerInvariant().Equals("categ2")) {
               line.Replace("c", "[" + string.Format("{0:0,#}", a.LsvLcFact / 1000) + "]"); }
            else if (a.Segment.ToLowerInvariant().Equals("categ3")) {
               line.Replace("z", "[" + string.Format("{0:0,#}", a.LsvLcFact / 1000) + "]"); } 
            else {
               line.Replace("e", "[" + string.Format("{0:0,#}", a.LsvLcFact / 1000) + "]"); }
          }
 .....

クラスでは、次のようなメールを送信します。

    public void SendResumen(string subject ,StringBuilder content)
    {
        var oMsg = new MailMessage...;
        ... add users
        oMsg.Subject = subject;
        var mimeType = new ContentType("text/html");
        var alternate = AlternateView.CreateAlternateViewFromString(content.ToString(), mimeType);
        oMsg.AlternateViews.Add(alternate);
        oMsg.IsBodyHtml = true;
        var cli = Client();
        cli.Send(oMsg);
    }

最後に、私がやっていることを理解していただければ幸いです。質問は次のとおりです。作成されたメッセージ本文を生成しないようにするために使用できるツールはありますか?

4

2 に答える 2

0

@Jim-Mischel からの提案を受け入れます

于 2013-05-13T17:43:55.143 に答える
0

HTML ペイロードを持つメッセージを送信できる VB アプリケーションがあり、AlternateView 機能を使用していません。

Dim mail As New MailMessage(fromUser.Email, toUser.Email)
mail.Subject = subject
mail.IsBodyHtml = True
mail.Body = message

HTML ペイロードを読み取ることができない電子メール クライアントに対して AlternateView 機能を使用するのはよいことですが、HTML メッセージを提供するだけなので、実際にはコードでそれを使用することはできません。ここで AlternateView 機能を動作させることができた場合、HTML を読み取れないクライアントには、単純なメッセージ テキストではなく HTML マークアップが表示されます。これが実際に機能するためには、テキストと HTML の両方の電子メール メッセージ本文を提供する必要があると思います。

于 2013-05-08T17:01:35.723 に答える