3

可能重复:
作为电子邮件模板的 Razor 视图

我正在从我的网站服务中向用户发送电子邮件。

我想对其进行格式化,以便它以一种特定的方式显示得很好。

这是我所拥有的:

<table bgcolor="#FFE680" border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
    <tr>
      <td width="100%" height="51" valign="middle"><h1> <strong>[COMPANY] User ID Reminder </strong></h1></td>
      <td align="right" valign="top" width="8"><img alt="" width="8" height="8" align="top" /></td>
    </tr>

  </tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
    <tr>
      <td><table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tbody>
          <tr>
            <td align="left" valign="top" width="100%"><table border="0" cellpadding="0" cellspacing="0" width="100%">
              <tbody>
                <tr>
                  <td><table border="0" cellpadding="0" cellspacing="0" width="100%">
                    <tbody>
                      <tr>
                        <td colspan="1" align="left"></td>
                        </tr>
                      <tr>
                        <td align="left" valign="top" width="100%"><p> <br />
                          Dear [USERNAME], </p>
                          <p> In response to your request to be reminded of your User ID, please   find below the information we have on file for you. If you didn't   submit  this request, ignore this email. </p>
                          <table border="0" cellpadding="0" cellspacing="0">
                            <tbody>
                                  <tr>
                                    <td>Your User ID is: </td>
                                    <td>[USERNAME]</td>
                                    </tr>
                                  <tr>
                                    <td>Your registered email address is:  </td>
                                    <td>[EMAIL]</td>
                                  </tr>
                              </tbody>
                            </table>
                          <p> 
                            If you have forgotten your password, you can request it here.<br />
                          </p>
                          <p> 
                            Thank you,<br />[COMPANY]
                          </p></td>
                        </tr>
                      </tbody>
                    </table></td>
                  </tr>
                </tbody>
              </table></td>
          </tr>
          </tbody>
      </table></td>
    </tr>
  </tbody>
</table>

现在我的问题不是关于电子邮件的外观,而是如何在填充适当的字段时将其作为电子邮件的正文?

我把它作为一个字符串放在资源中,我想我只是替换特定的[字段]。这开始变得乏味并且显得草率:

var body = SuburbanHUB.Properties.Resources.ForgotPasswordEmailBody.Replace("[USERNAME]", username).Replace("[EMAIL]")...

我确信有更好的方法可以做到这一点,但我没有经验。

=== 澄清 ===

我正在使用 razor 调用用 C# 编写的 WCF 服务。被调用的服务是发送电子邮件的地方,而不是视图。我将 Razor 与 MVC 一起使用,并将 C# 作为底层代码。

4

2 回答 2

1

我有类似的要求,最终我使用了 NVelocity,它对我来说非常有用。请参阅这篇文章以了解http://www.codeproject.com/Articles/12751/Template-merging-with-NVelocity-and-ASP-NET。您必须根据速度模板语言修改模板中的字段。从http://nvelocity.sourceforge.net/下载 NVelocity 。

于 2012-10-29T19:54:14.780 回答
1

我正在尝试做同样的事情。我们使用 Razor 模板来生成电子邮件,并传入一个Model包含所有各种变量的变量来填充它。这让我们可以包含 Razor 和 MVC 支持的所有内容,包括@ifand @Html.Partial,这让我们可以从片段中构建电子邮件。

我们刚刚提出的答案涉及运行一个内部 MVC 网络服务器,使用模型作为参数从它请求页面,并捕获响应文本,但我的问题有一些变体,它们更加独立。 看看其他答案或评论是否对您有帮助。

于 2012-10-29T20:36:15.697 回答