创建动态电子邮件模板的最佳方法是什么,可以在不更改C#.net MVC中的代码的情况下进行修改?

问题描述 投票:0回答:3

我正在创建一个Web应用程序,需要在操作完成时向用户发送电子邮件。在电子邮件正文中,我需要在最后一次操作中通知用户交易详情。我知道如何向一个人发送电子邮件以及如何通过在字符串中对消息进行硬编码来添加事务详细信息。我想知道的是,如何通过在JSON文件或我的数据库中进行硬编码来制作此电子邮件主题,以便更改电子邮件正文中的邮件不需要我再次发布应用程序。

目前,我的想法是使用几个键中的邮件正文创建一个JSON文件,并将键值组合到应用程序中的字符串中。这是我正在考虑的JSON结构:

{
  "NewTransaction":{
    "EN":{
      "Greeting":"Dear ",
      "Introduction":"We found that a transaction was completed against your name on ",
      "Body1":". The following are some of your transaction details:",
      "Body2":"Kindly let us know if there is any discrepancy with this transaction"
    },
    "MY":""
  }
}

在试图解决这个问题时,我发现this包似乎对创建邮件正文很有帮助。

还有其他更好的方式,也许我忽略了?

提前致谢!

c# asp.net-mvc-4 dynamic .net-4.5 email-integration
3个回答
0
投票

每个以“什么是最好的方式”开头的问题可能过于广泛或基于意见。

在我的视野中,您可以创建一个表格(右侧的字段名称,左侧的示例数据)

id:1 来自:@@ sysadress @@ 致:@@ useremail @@ 主题:交易完成 body:这里有你的html主体填充@@ data @@ ......根据需要增加更多领域......

请看@@这些东西@@ - 这些是动态文本的占位符。

在您的操作表中,您将添加一个列,类似于actionMessage,并将其链接到Message表。更好的是创建Action_Message表。

Id, ActionId, MessageId, ActionStatus

这将允许发送不同的消息,具体取决于您的操作是否失败,已完成或已推迟,或其他任何操作。

所以,这可能是一种方式。但你不可能找到“最好的方式”。每种最佳方式都可以改进。但这肯定会实现您的主要目标 - 无需重新编译即可更改消息。


1
投票

您应该查看Postal发送电子邮件。

要获取数据,为什么不使用SQL,您可以将主题和内容存储在可以即时更新的字段中。


0
投票
EmailTemplateHelper templateHelper = new EmailTemplateHelper( HttpContext.Current.Request.MapPath("~/template_path/EMAIL_TEMPLATE.template"));

Dictionary<string, string> replaceMapper = new Dictionary<string, string>() 
{
    { "TAG1", emailInfo.name },
    { "TAG2", emailInfo.lastname}

};
mailMessage.Subject = templateHelper.GetSubject(replaceMapper);
mailMessage.Body = templateHelper.GetBody(replaceMapper);

mailMessage.IsBodyHtml = true;

在您的模板文件中,您应该在%TAG1%的位置放置数据。

© www.soinside.com 2019 - 2024. All rights reserved.