5

電子メールを送信する必要があるコンソール アプリケーションがあります。今は文字列ビルダーを使って電子メールを作成していますが、もっと凝ったものにしたいと思っています。そこで、HTML マークアップを含む ASP.NET MVC スタイル ビューにオブジェクトを送信し、それを郵送して返送するのはよいことだと思いました。今、私はそれを次のように行っています。

    private void MailJobList(List<Job> newJobs) {
                var body = new System.Text.StringBuilder();
                var from = new MailAddress("daemon@mydomain.com");
                var to = new MailAddress(addresslist.Get());

                var message = new MailMessage(from, to);

                message.Subject = "New job list";

    //mail settings ommitted here for brevity

                body.Append("New jobs: ");
                if (newJobs.Any()) {
                    foreach (var newJob in newJobs) {
                        body.Append(newJob.Job + ", ");
                    }
                }

                message.Body = body.ToString();

                client.Send(message);
}

明らかにそれは単なるプレーンテキストですが、私は本当に次のようなことができるようにしたいと思っています:

var body = RenderHTMLMessage(newJobs);

ASP.NET MVC のビュー エンジン (または Spark やその他のビュー エンジン) を活用でき、独自のエンジンを作成する必要はないようです。私がここで的外れである場合、またはこれを行うためのより簡単な方法がある場合は、提案を受け付けています。

4

6 に答える 6

4

コンソール アプリで新しいRazorビュー エンジンを使用できます。次のブログ投稿を参照してください。

http://thegsharp.wordpress.com/2010/07/07/using-razor-from-a-console-application/

于 2010-10-19T16:13:31.407 に答える
3

Spark View Engine汎用テンプレート エンジンとして使用できます。Spark の作成者は、それを行う方法についてのブログ投稿を書きました (良い出発点になるでしょう)。

于 2010-10-19T16:43:54.797 に答える
2

これを行うには、asp.net に似た構文を持つT4 テンプレートを使用できます。ただし、VS2010 に同梱されている T4 バージョンが必要です。ここに例を示します。これは件名のmsdnです

于 2010-10-19T16:17:30.773 に答える
0

MVC インフラストラクチャは、このタスクには重すぎます。ページを作成するために MVC アプリケーションを作成/ホストしない限り、電子メールを送信する前に URL から直接 html を読み取る必要があります (これは、(ブラウザでこれを表示する) リンクが既に作成されていることを意味する場合もあります (これをニュースレターに使用する場合)。

特定の電子メールについては、すべての html (および電子メールに必要なインライン スタイル) を含む html テンプレート ファイルを作成し、html を読み込んでトークンを置き換えます (例: ##TO_NAME## など) トークンまたはリスト (書き出された行) はきれいになりますとにかくそれぞれに特定のコード。

これは、電子メール テンプレートからトークンを削除しないことで、電子メール テンプレートを個別にコードに変更し、コンテンツを省略することができることを意味します。

例えば:

<html>
<body style="font-size:10px">
Dear ##To_NAME##< /br>
</br>
Your Jobs< /br>
  <table>
      <tr>
         <td colspan="2">New Jobs<td>
      </tr>
      ##JOB_LIST##
  <table>
  ##FROM_NAME##
</body>
</html>
于 2010-10-19T16:37:36.763 に答える
0

DotLiquid (www.dotliquidmarkup.org) を試してみてください。簡単な構文で、あらゆる種類のアプリケーションで使用できるテンプレート エンジンです。

于 2010-10-19T20:37:10.337 に答える
0

ここでの問題は、ASP.NET MVC が ASP.NET に大きく依存しており、ASP.NET が Web サーバーに依存していることです。希望どおりに実行できるとは思いません。あなたができることは、ASP.NET を自分でホストし、自分自身にリクエストを偽造することです。

于 2010-10-19T16:08:22.240 に答える