使用T4模板动态生成邮件内容并储存到任意位置

一.基础概念介绍
T4模板是扩展名为 .tt 的文本文件。 他分为设计时模板 和运行时模板。主要区别在于在vs中右键点击文件,打开“属性”,在“自定义工具”一栏中的值分别如下:
设计时模板: TextTemplatingFileGenerator
运行时模板:TextTemplatingFilePreprocessor

二.模板转换
  当然设计时模板可以转为运行时模板,只要将该文件的“自定义工具”属性设置为 TextTemplatingFilePreprocessor即可。
  但是运行时模板很多情况下不能转为设计时模板。

三.运行时模板的使用
这里讲解通过C#代码来控制,何时执行T4模板来产生邮件内容,并储存到指定的位置。

1.添加一个T4模板,修改为运行时模板
MultiArticle.tt

<#@ template language="C#" #>
<div style="text-align:center;">
    <table width="600" cellpadding="0" cellspacing="0" border="0" style="margin:0 auto;"><tbody><tr><td>
        <div style="width:600px;text-align:left;font:12px/15px simsun;color:#000;background:#fff;">
<h1><#=Subject #></h2>
<table>
<# foreach(Article item in ArticleList)
  { #>
<tr><td> <#= item.Title #> </td><td> <#= item.Content #> </td></tr>
<# } #>
</table>
       </div>
    </td></tr></tbody></table>
</div>

2.这个模板需要一个实体类表示邮件的内容
一个是以模板名+code结尾:MultiArticleCode.cs,注意类名与模板名要相同,都是MultiArticle。

   public class Article
    {
        public string Title { get; set; }
        public string Content { get; set; }
    }

    public partial class MultiArticle
    {
        public string Subject { get; set; }
        public List<Article> ArticleList { get; set; }
        public MultiArticle(string subject, List<Article> articles) { Subject = subject; ArticleList = articles; }
    }

3.动态执行

  static void Main(string[] args)
        {
            string subject="最新消息";
            var artList=new List<Article>();
            for (int i = 0; i < 4; i++)
            {
                Article art = new Article();
                art.Title = "标题"+i+":"+Guid.NewGuid();
                art.Content = "内容" +i+ ":" + Guid.NewGuid();
                artList.Add(art);
            }
            MultiArticle mod=new MultiArticle(subject,artList);
            //TransformText方法是模板编译时自动产生的,
            //这也是前面有提到的,模板MultiArticle.tt的命名要与MultiArticleCode.cs中的类名相同的原因,
            //利用分部类partial,就可以调用该TransformText方法了。
            String pageContent = mod.TransformText();
            //将pageContent保存到任何你想保存的地方
            System.IO.File.WriteAllText("outputPage.html", pageContent, Encoding.UTF8);
        }

项目源码下载:

http://download.csdn.net/download/manimanihome/9667483

原文地址:https://www.cnblogs.com/hnsongbiao/p/8685999.html

时间: 2024-08-27 05:52:05

使用T4模板动态生成邮件内容并储存到任意位置的相关文章

使用Razor视图引擎来生成邮件内容

邮件的内容其实是就HTML,传统的做法都是通过在程序中拼接字符串来生成邮件的内容,生成困难,维护也困难.Razor是MVC里面使用的视图引擎,用来生成HTML非常方便,ZKEACMS中就是使用了Razor视图引擎,用cshtml作为邮件模板来生成邮件内容.这样很方便维护和修改. 定义接口 IViewRenderService 接口中定义了两个方法,第一个是视图中没有使用ViewModel,直接传入视图路径就可以了.第二个是视图中有作用ViewModel,传入视图路径和ViewModel对象就可以

T4模板:MVC中用T4模板快速生成代码

T4模板快速生成代码: 以快速生Dal文件为例,下面为T4模板文件的内容 <#@ template debug="false" hostspecific="true" language="C#" #> <#@ include file="EF.Utility.CS.ttinclude"#> <#@ output extension=".cs" #> <# CodeG

BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面

前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4的语法,虽然没有完全掌握,但是算是有了一个大致的了解.于是乎有了今天的这篇文章:通过T4模板快速生成页面. KnockoutJS系列文章: JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一) JS组件系列——BootstrapTable+KnockoutJS

[搬运自我的CSDN博客] python抓取javascript动态生成HTML内容的实践

<注:CSDN博客在美国访问特别卡,所以转移到cnblogs来发文章> 本实验在Ubuntu14.04上完成.使用的浏览器是火狐(Firefox 33.0),python版本是2.7.6. 大家都知道用urllib配合正则表达式抓取静态HTML的内容很方便,但是如果网页中有javascript动态生成的内容,urllib就无能为力了. 此时我们要借助一个额外的工具:selenium.它的工作原理是操纵(火狐)浏览器浏览目标网页,等待网页中的javascript全部执行完毕后再对HTML源码进行

C#集合篇,在业务背景下(***产品升级管理):依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量巧用,属性实际运用,唯一性验证

QQ:1187362408 欢迎技术交流和学习 关于系统产品升级报告管理,业务需求: TODO: 1,升级报告管理:依据各县区制定升级报告(关联sAreaCode,给每个地区观看具体升级报告信息) 2,运用的技术:依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量与可null变量巧用,属性实际运用,唯一性验证,url传递中文编码和解码问题 讲解篇:1,服务端aspx,2,服务端后台返回数据(这里采用服务器端程序:aspx.cs)

MVC 根据模板动态生成静态页面

不是自己想出来的,找了好久没有找到相关的内容,根据源码发现 返回视图时时返回的ActionResult 类型的对象,然后执行ExecuteResult 方法,源码如下: 1 public override void ExecuteResult(ControllerContext context) 2 { 3 if (context == null) 4 { 5 throw new ArgumentNullException("context"); 6 } 7 if (string.Is

轻量级ORM 利用T4模板 批量生成多文件 实体和业务逻辑 代码

FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.Model 利用T4模板,[MultipleOutputHelper.ttinclude]批量生成多文件 基本语法: 1. 初始化:获取MultipleOutputHelper.ttinclude文件模板 在T4模板导入 //导入MultipleOutputHelper.ttinclude文件 路径 <#@include file="$(SolutionDir)\ORM.Model\T4\Mult

T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll

生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文件,选择[ 运行时文本模版](后缀为 .tt)取个名字点确定. 步骤2 设置当前T4所需要的序集并且引用 SqlSugar.dll 编写连接数据库代码 调用SqlSugar生成实体函数,填写参数. 图片看不清楚看下面代码 <#@ template debug="false" host

T4模板批量生成代码

大家通过比对下,就应该知道怎么玩. T4代码 <#@ template debug="false" hostspecific="true" language="C#" #> //告诉T4引擎控制块用c#编写 <#@ include file="EF.Utility.CS.ttinclude"#> //引入EF模板 <#@ output extension=".cs" #>