将HTML文件分配给Message.c#的主体

本文关键字:主体 Message HTML 文件分配 | 更新日期: 2023-09-27 18:11:04

我想给邮件主体分配一个完整的HTML文件,我想把这个文件分配给消息主体,我输入:

消息。isbody = true;

我可以用它来逐行赋值

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

但是有没有一种方法来分配完整的HTML文件的主体?我有一个HTML文件,包含设计的电子邮件正文。

希望清楚。

将HTML文件分配给Message.c#的主体

您应该创建一个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();
    

直接将文件添加到您的项目资源中:

项目属性>资源>添加现有文件

代码中使用:Resources。ResourceName

我最喜欢的方法是使用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主体/文本主体)的情况,因为:

  • 模板干净,作为解决方案
  • 的一部分
  • 你可以添加自定义变量到模板