如何在我的应用程序中创建电子邮件模板

时间:2012-10-29 19:50:20

标签: c# asp.net-mvc razor

  

可能重复:
  Razor views as email templates

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

我想格式化它,以便它显示出漂亮和特定的方式。

这就是我所拥有的:

<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服务。正在调用的服务是发送电子邮件的位置,而不是视图。我正在使用带有C#的Razor和C#作为底层代码。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

我们刚才接下来的答案涉及运行一个内部MVC网络服务器,以模型作为参数请求它的页面,并捕获响应文本,但我的问题的变体更加自包含。 Take a look并查看是否有任何其他答案或评论可以帮助您。

相关问题