在c#中将HTML文件分配给Message.Body

时间:2015-09-03 09:56:57

标签: c# html html-email

我想将完整的HTML文件分配给电子邮件正文,我想将此文件分配给邮件正文,我把:

  

message.IsBodyHtml = true;

我可以用它来逐行分配

"Welcome to our system",
"<b>Thanks to join to our system !<br /><br />",

但是有没有办法将完整的HTML文件分配给正文?我有一个包含电子邮件正文设计的HTML文件。

希望清楚。 在此先感谢

3 个答案:

答案 0 :(得分:1)

您应该创建EmailTemplate

  • 将新文件夹添加到项目中,例如EmailTemplates
  • 将新文本文件添加到EmailTemplates文件夹,例如EmailTemplate.txt
  • EmailTemplate.txt
  • 中编写HTML模板
  • 然后在代码中:

    string AppPath = Request.PhysicalApplicationPath;
    StreamReader sr = new StreamReader(AppPath + "EmailTemplates/EmailTemplate.txt");
    message.IsBodyHtml = true;
    message.Body = sr.ReadToEnd();
    sr.Close();
    

答案 1 :(得分:0)

只需将文件添加到项目资源中:

项目属性&gt;资源&gt;添加现有文件

在代码中使用:Resources.ResourceName

答案 2 :(得分:0)

我最喜欢的方式是使用T4模板。

您创建T4模板文件

<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ parameter name="Email" type="System.String" #>
<p>Here is text for <#= Email #></p>

然后您可以在发送邮件之前处理模板

MyTemplate template = new MyTemplate 
{
   Session = new Dictionary<string, object>
   {
      { "Email", "some@email.com" }
   }
};

template.Initialize();
string body = template.TransformText();

最后使用您的HTML正文发送电子邮件

MailMessage message = new MailMessage(this.emailConfiguration.SmtpUser, email)
{
   IsBodyHtml = true,
   Body = body,
   Subject = "Your email subject"
};

我更喜欢这个解决方案(html正文/文本正文),因为:

  • 模板很干净,是解决方案的一部分
  • 您可以将自定义变量添加到模板