通过模板解析器发送Html格式的E_Mail

本部分所要描述的产生html格式的E_Mail的解决方案将呈现的输出与本文其他方式产生的输出是完全一样的。它采用完全不同的技术,它已经在开发领域出现多年了:解析。让我们先创建解析器,代码如下:

用Asp.net高效地发送Html格式的Email(五)public class HtmlTemplateParserCS
{
用Asp.net高效地发送Html格式的Email(五)    
private string _TemplateFileName; 
用Asp.net高效地发送Html格式的Email(五)    
private string[] _Tokens; 
用Asp.net高效地发送Html格式的Email(五)    
private string[] _Values; 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)    
public string TemplateFileName 

用Asp.net高效地发送Html格式的Email(五)        
get 

用Asp.net高效地发送Html格式的Email(五)            
return _TemplateFileName; 
用Asp.net高效地发送Html格式的Email(五)        }
 
用Asp.net高效地发送Html格式的Email(五)        
set 

用Asp.net高效地发送Html格式的Email(五)            _TemplateFileName 
= value; 
用Asp.net高效地发送Html格式的Email(五)        }
 
用Asp.net高效地发送Html格式的Email(五)    }
 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)    
public string Tokens 

用Asp.net高效地发送Html格式的Email(五)        
set 

用Asp.net高效地发送Html格式的Email(五)            _Tokens 
= value.Split(Convert.ToChar(“|”)); 
用Asp.net高效地发送Html格式的Email(五)        }
 
用Asp.net高效地发送Html格式的Email(五)    }
 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)    
public string Values 

用Asp.net高效地发送Html格式的Email(五)        
set 

用Asp.net高效地发送Html格式的Email(五)            _Values 
= value.Split(Convert.ToChar(“|”)); 
用Asp.net高效地发送Html格式的Email(五)        }
 
用Asp.net高效地发送Html格式的Email(五)    }
 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)    
public HtmlTemplateParserCS()
{
用Asp.net高效地发送Html格式的Email(五)        
//Constructor
用Asp.net高效地发送Html格式的Email(五)
    }
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)    
public string GetParsedHtmlFile() 

用Asp.net高效地发送Html格式的Email(五)        StringBuilder FileContents 
= new StringBuilder(); 
用Asp.net高效地发送Html格式的Email(五) 
用Asp.net高效地发送Html格式的Email(五)        FileContents 
= FileContents.Append(GetContentOfTemplateFile(TemplateFileName)); 
用Asp.net高效地发送Html格式的Email(五)            
用Asp.net高效地发送Html格式的Email(五)        
for (int TokenCounter = _Tokens.GetLowerBound(0); TokenCounter <= 
用Asp.net高效地发送Html格式的Email(五)            _Tokens.GetUpperBound(
0); TokenCounter++

用Asp.net高效地发送Html格式的Email(五)            FileContents 
= FileContents.Replace(_Tokens[TokenCounter],     
用Asp.net高效地发送Html格式的Email(五)                _Values[TokenCounter]);
用Asp.net高效地发送Html格式的Email(五)        }
 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)        
return FileContents.ToString(); 
用Asp.net高效地发送Html格式的Email(五)    }
 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)    
private string GetContentOfTemplateFile(string FileName) 

用Asp.net高效地发送Html格式的Email(五)        StreamReader StreamReaderHtmlFile; 
用Asp.net高效地发送Html格式的Email(五)        
string ContentOfFile; 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)        StreamReaderHtmlFile 
= File.OpenText(FileName); 
用Asp.net高效地发送Html格式的Email(五)        ContentOfFile 
= StreamReaderHtmlFile.ReadToEnd(); 
用Asp.net高效地发送Html格式的Email(五)        StreamReaderHtmlFile.Close(); 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)        
return ContentOfFile;  
用Asp.net高效地发送Html格式的Email(五)    }
 
用Asp.net高效地发送Html格式的Email(五)}

用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)


他们是如何创建,有什么用那?首先:HtmlTemplateParserCS类的属性(只读),这些属性对我的类来说是至关重要的。为了解析html文件,我需要一个TemplateFileName,符号(作为我模板文件中数据的占位符)数组,数据(呈现从数据储存器中获取的数据)数组。符号和值是由“|”分割的字符数组。注意,我在他们各自属性的set方法里通过Split方法(value变量的)分割数组。分割是必须的,因为我要移除“|”字符。

在方法GetParsedHtmlFile中,我创建了StringBuilder的实例FileContents ,它将附加函数GetContentOfTemplateFile的返回值。

方法GetContentOfTemplateFile 将文件名作为参数,并用StreamReader 读取提供的html模板的内容,然后以string类型返回模板的内容。

剩下的事就是用各自的值替换符号。为了实现这个目的,我重新遍历数组,通过用GetLowerBound 和GetUpperBound 方法探测边界。然后以string类型返回FileContents的内容。

利用解析发送Mail

问题是如何利用上面开发的解析器发送Mail?这是我接下来要描述的。从一个新的名为TemplateHtmlParser.aspx的开始。用户获取密码的接口以及触发的行为---发送要求的Mail---跟文章前面部分描述的一样,所以不再赘述。但是,我发现我必须创建一个新的名为ParsedHtmlEmailCS.cs的文件,它将从EmailDataCS(这个前面也有叙述)的实例中获取必需的数据。下面的代码展示了上面所说的内容

用Asp.net高效地发送Html格式的Email(五)public class ParsedHtmlEmailCS
{
用Asp.net高效地发送Html格式的Email(五)    
public ParsedHtmlEmailCS()
{
用Asp.net高效地发送Html格式的Email(五)        
//Constructor
用Asp.net高效地发送Html格式的Email(五)
    }
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)    
public void SendParsedTemplate(string emailAddress) 

用Asp.net高效地发送Html格式的Email(五)        HtmlEmailCS.EmailDataCS Credentials 
= new HtmlEmailCS.EmailDataCS(); 
用Asp.net高效地发送Html格式的Email(五)        HtmlEmailCS.UserCredentialsCS UserData 
=     
用Asp.net高效地发送Html格式的Email(五)            Credentials.GetUserCredentials(emailAddress); 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)        
if (UserData.ExistingCredentials > 0

用Asp.net高效地发送Html格式的Email(五)            HtmlEmailCS.HtmlTemplateParserCS HtmlFile 
= new 
用Asp.net高效地发送Html格式的Email(五)                HtmlEmailCS.HtmlTemplateParserCS(); 
用Asp.net高效地发送Html格式的Email(五)            HtmlFile.TemplateFileName 
= 
用Asp.net高效地发送Html格式的Email(五)                HttpContext.Current.Server.MapPath(“Templates
/HtmlTemplate.htm”); 
用Asp.net高效地发送Html格式的Email(五)                
用Asp.net高效地发送Html格式的Email(五)            HtmlFile.Tokens 
= “Token1|Token2”; 
用Asp.net高效地发送Html格式的Email(五)            HtmlFile.Values 
= Convert.ToString(UserData.Username) + (“|”) + 
用Asp.net高效地发送Html格式的Email(五)                Convert.ToString(UserData.Password); 
用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)            MailMessage MessageMail 
= new MailMessage(); 
用Asp.net高效地发送Html格式的Email(五)            MessageMail.From 
= “info@domain.com”; 
用Asp.net高效地发送Html格式的Email(五)            MessageMail.To 
= emailAddress; 
用Asp.net高效地发送Html格式的Email(五)            MessageMail.Subject 
= “Your credentials”; 
用Asp.net高效地发送Html格式的Email(五)            MessageMail.BodyFormat 
= MailFormat.Html; 
用Asp.net高效地发送Html格式的Email(五)            
用Asp.net高效地发送Html格式的Email(五)            
string MailBody; 
用Asp.net高效地发送Html格式的Email(五)            MailBody 
= Convert.ToString(HtmlFile.GetParsedHtmlFile()); 
用Asp.net高效地发送Html格式的Email(五)            MessageMail.Body 
= MailBody; 
用Asp.net高效地发送Html格式的Email(五)            SmtpMail.SmtpServer 
= “mail-out.server.com”; 
用Asp.net高效地发送Html格式的Email(五)            SmtpMail.Send(MessageMail); 
用Asp.net高效地发送Html格式的Email(五)        }
 
用Asp.net高效地发送Html格式的Email(五)        
else 

用Asp.net高效地发送Html格式的Email(五)            
throw new Exception(“Please specify a valid registered e-mail address”); 
用Asp.net高效地发送Html格式的Email(五)        }
 
用Asp.net高效地发送Html格式的Email(五)    }

用Asp.net高效地发送Html格式的Email(五)}

用Asp.net高效地发送Html格式的Email(五)
用Asp.net高效地发送Html格式的Email(五)

相关文章:

  • 2021-06-13
  • 2022-12-23
  • 2022-01-30
  • 2021-12-24
  • 2021-12-05
  • 2021-06-10
  • 2021-08-02
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
相关资源
相似解决方案