【问题标题】:How do I create an email template within my application [duplicate]如何在我的应用程序中创建电子邮件模板 [重复]
【发布时间】:2012-10-29 19:50:20
【问题描述】:

可能重复:
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 服务。被调用的服务是发送电子邮件的地方,而不是视图。我将 Razor 与 MVC 一起使用,并以 C# 作为底层代码。

【问题讨论】:

  • 您不会说您是从网站、WinForms 程序、WPF 程序还是其他方式发送此信息。它可以对您可以获得哪些答案产生重大影响。
  • 什么是“C# 服务”?网络服务? WCF 服务?
  • 我们正在使用 WCF 服务。天哪,学会读我的心!! :P
  • 作为评论,我使用了完全相同的方法,但我只是使用 {i} 和 string.format 函数而不是 [USERNAME]。

标签: c# asp.net-mvc razor


【解决方案1】:

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

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

【讨论】:

  • 这应该是评论。
  • @jrummell - 我认为这是一个合理的答案:“做我所做的。”不过,我应该提供更多细节。我会为此编辑它。
  • 关闭与否...这就是我的想法。感谢您的意见。
【解决方案2】:

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

【讨论】:

  • 我喜欢这个选项,但它对我不起作用。我们需要将逻辑嵌入到我们的模板中,并将其他模板嵌入其中。这对于任何简单的事情都非常有用,其中包括 OP 的示例。绝对是比我的更简单的解决方案。
  • 据我所知,velocity 提供了嵌套模板功能和一些要包含在模板本身中的条件,但我从未尝试过。您可能需要为此检查速度模板参考指南。 velocity.apache.org/engine/releases/velocity-1.5/…
猜你喜欢
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2013-04-24
相关资源
最近更新 更多