首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#创建一个可用于电子邮件的模板

C#创建一个可用于电子邮件的模板
EN

Stack Overflow用户
提问于 2011-07-21 23:30:14
回答 7查看 200关注 0票数 1

我在写自动电子邮件。它必须每隔X分钟扫描一次数据库,并给人们发电子邮件提醒等。

我已经准备好了所有的基本代码。我现在只需要格式化电子邮件。

在C#中有任何预定义的模板系统,所以我可以创建一个包含不同模板和示例的文件夹。标签,如,所以我只需找到并替换它.

我可以手动打开一个*.txt文档并替换这些特定的标记等等,但是还有什么更聪明的吗?我不想重新发明方向盘。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-07-22 00:36:26

我会考虑使用StringTemplate:http://www.stringtemplate.org/

票数 2
EN

Stack Overflow用户

发布于 2011-07-21 23:33:44

您可以使用MVC 3的Razor模板,甚至在非web应用程序中也可以这样做。

Razor templates non-web的互联网搜索会出现很多例子。

票数 1
EN

Stack Overflow用户

发布于 2011-07-21 23:37:27

从头开始写并不难。我编写了这个快速实用程序来完成您所描述的。它在模式{token}中查找标记,并将其替换为从NameValueCollection检索的值。字符串中的标记对应于集合中的键,这些键被替换为集合中键的值。

它还有一个额外的好处,就是它足够简单,完全可以根据你的需要定制。

代码语言:javascript
复制
    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;
    }

用法:

代码语言:javascript
复制
    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
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6784080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档