5

我有一个控制台应用程序,需要我发送电子邮件。现在我使用字符串生成器来创建电子邮件,但我想变得更花哨。然后我恍然大悟:最好将我的对象发送到 ASP.NET MVC 样式视图,在其中我有 HTML 标记,然后将其返回以邮寄出去。现在,我把它当作;

    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

这里的问题是 ASP.NET MVC 严重依赖于 ASP.NET,而 ASP.NET 依赖于网络服务器。我认为这不是你想要的方式。您可以做的是自己托管 ASP.NET,并向自己发送虚假请求。

于 2010-10-19T16:08:22.240 回答
0

MVC 基础设施对于这项任务来说太重了。除非您编写/托管一个 MVC 应用程序来创建页面,然后在发送电子邮件之前直接从 URL 读取 html(这也可能意味着(在浏览器中查看)链接已经创建(如果将其用于 newletters。

对于特定的电子邮件,创建包含所有 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 回答