我在写自动电子邮件。它必须每隔X分钟扫描一次数据库,并给人们发电子邮件提醒等。
我已经准备好了所有的基本代码。我现在只需要格式化电子邮件。
在C#中有任何预定义的模板系统,所以我可以创建一个包含不同模板和示例的文件夹。标签,如,所以我只需找到并替换它.
我可以手动打开一个*.txt文档并替换这些特定的标记等等,但是还有什么更聪明的吗?我不想重新发明方向盘。
发布于 2011-07-22 00:36:26
我会考虑使用StringTemplate:http://www.stringtemplate.org/
发布于 2011-07-21 23:33:44
您可以使用MVC 3的Razor模板,甚至在非web应用程序中也可以这样做。。
Razor templates non-web的互联网搜索会出现很多例子。
发布于 2011-07-21 23:37:27
从头开始写并不难。我编写了这个快速实用程序来完成您所描述的。它在模式{token}中查找标记,并将其替换为从NameValueCollection检索的值。字符串中的标记对应于集合中的键,这些键被替换为集合中键的值。
它还有一个额外的好处,就是它足够简单,完全可以根据你的需要定制。
public static string ReplaceTokens(string value, NameValueCollection tokens)
{
if (tokens == null || tokens.Count == 0 || string.IsNullOrEmpty(value)) return value;
string token = null;
foreach (string key in tokens.Keys)
{
token = "{" + key + "}";
value = value.Replace(token, tokens[key]);
}
return value;
}用法:
public static bool SendEcard(string fromName, string fromEmail, string toName, string toEmail, string message, string imageUrl)
{
var body = GetEmailBody();
var tokens = new NameValueCollection();
tokens["sitedomain"] = "http://example.com";
tokens["fromname"] = fromName;
tokens["fromemail"] = fromEmail;
tokens["toname"] = toName;
tokens["toemail"] = toEmail;
tokens["message"] = message;
tokens["image"] = imageUrl;
var msg = CreateMailMessage();
msg.Body = StringUtility.ReplaceTokens(body, tokens);
//...send email
}https://stackoverflow.com/questions/6784080
复制相似问题