开发一个能够发送Html格式邮件的用户控件

实际上开发这个控件是很简单的。在UserControl的文件夹里,添加一个名为SimpleEmailTemplate.ascx 的控件并添加想要的Html代码(看看下载的代码中的html代码是否中意)。在相关联的后台代码SimpleEmailTemplate.ascx.cs 中,添加两个Literal 控件并声明两个公共属性。这些公共属性对这个用户控件是至关重要的,因为在本文接下来的部分用这些属性给Literal 控件的value赋值。

由上在SimpleEmailTemplate.ascx.cs 文件中产生的代码如下:

用Asp.net高效地发送Html格式的Email(四)public class SimpleEmailTemplate : System.Web.UI.UserControl
{
用Asp.net高效地发送Html格式的Email(四)    
protected System.Web.UI.WebControls.Literal LiteralUsername;
用Asp.net高效地发送Html格式的Email(四)    
protected System.Web.UI.WebControls.Literal LiteralPassword;
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)    
private string _Username; 
用Asp.net高效地发送Html格式的Email(四)    
private string _Password; 
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)    
public string Username 

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

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

用Asp.net高效地发送Html格式的Email(四)            _Username 
= value; 
用Asp.net高效地发送Html格式的Email(四)            LiteralUsername.Text 
= _Username; 
用Asp.net高效地发送Html格式的Email(四)        }
 
用Asp.net高效地发送Html格式的Email(四)    }
 
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)    
public string Password 

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

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

用Asp.net高效地发送Html格式的Email(四)            _Password 
= value; 
用Asp.net高效地发送Html格式的Email(四)            LiteralPassword.Text 
= _Password; 
用Asp.net高效地发送Html格式的Email(四)        }
 
用Asp.net高效地发送Html格式的Email(四)    }

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

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


注意,我在各自属性的set方法里给两个Literal控件赋了值。这是必须的,因为当呈现一个用户控件去发送邮件的时候,Page_Load事件将不再触发。

现在,创建的用户控件如何呈现为一个html格式的邮件?这是我在下面就呈现给您的内容。

用这个控件发送html格式的邮件

现在在您的工程里面添加一个名为SimpleHtmlTemplate.aspx 的页面。这个页面将包含与"创建页面获取失去的密码"部分同样的接口,因此我将不再赘述。

让我们看一下后台文件 SimpleHtmlTemplate.aspx.cs ,并看一下它是如何做的

用Asp.net高效地发送Html格式的Email(四)private void SendSimpleEmailTemplate() 

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

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

用Asp.net高效地发送Html格式的Email(四)            SimpleEmailTemplate EmailTemplate 
= 
用Asp.net高效地发送Html格式的Email(四)                ((SimpleEmailTemplate)LoadControl
用Asp.net高效地发送Html格式的Email(四)                    (“
~/UserControls/SimpleEmailTemplate.ascx”)); 
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)            EmailTemplate.Username 
= UserData.Username; 
用Asp.net高效地发送Html格式的Email(四)            EmailTemplate.Password 
= UserData.Password; 
用Asp.net高效地发送Html格式的Email(四)                    
用Asp.net高效地发送Html格式的Email(四)            StringWriter StringWriter 
= new StringWriter(); 
用Asp.net高效地发送Html格式的Email(四)            Html32TextWriter HtmlMailWriter 
= new Html32TextWriter(StringWriter); 
用Asp.net高效地发送Html格式的Email(四)            EmailTemplate.RenderControl(HtmlMailWriter); 
用Asp.net高效地发送Html格式的Email(四)            
string Body = StringWriter.ToString(); 
用Asp.net高效地发送Html格式的Email(四)                    
用Asp.net高效地发送Html格式的Email(四)            MailMessage MailMessage 
= new MailMessage(); 
用Asp.net高效地发送Html格式的Email(四)            MailMessage.From 
= “info@domain.com”; 
用Asp.net高效地发送Html格式的Email(四)            MailMessage.To 
= Convert.ToString(TextboxEmailAddress.Text);
用Asp.net高效地发送Html格式的Email(四)            MailMessage.Subject 
= “Your credentials”; 
用Asp.net高效地发送Html格式的Email(四)            MailMessage.Body 
= Body; 
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)            MailMessage.BodyFormat 
= MailFormat.Html; 
用Asp.net高效地发送Html格式的Email(四)            SmtpMail.SmtpServer 
= “mail-out.server.com”; 
用Asp.net高效地发送Html格式的Email(四)            SmtpMail.Send(MailMessage); 
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)            LabelMessage.Text 
= “The requested information has been sent to the email 
用Asp.net高效地发送Html格式的Email(四)                address specified.”; 
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)        }
 
用Asp.net高效地发送Html格式的Email(四)        
catch (Exception ex) 

用Asp.net高效地发送Html格式的Email(四)            LabelMessage.Text 
= ex.Message.ToString(); 
用Asp.net高效地发送Html格式的Email(四)        }
 
用Asp.net高效地发送Html格式的Email(四)
用Asp.net高效地发送Html格式的Email(四)    }
 
用Asp.net高效地发送Html格式的Email(四)    
else 

用Asp.net高效地发送Html格式的Email(四)        LabelMessage.Text 
= “Please provide a valid e-mail address”; 
用Asp.net高效地发送Html格式的Email(四)    }

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

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


上面就是SendSimpleEmailTemplate 代码的主要部分。首先我创建了一个EmailDataCS 类的实例,接着我定义了一个UserCredentialsCS类型的实例UserData,我调用Credentials对象(EmailDataCS类型的)的GetUserCredentials方法,获取我的用户控件SimpleEmailTemplate.ascx需要的认证信息。

我通过UserCredentialsCS 的ExistingCredentials 属性判断对象是否包含需要的认证信息。如果包含,发送Mail。然后我将通过LoadControl方法 动态地加载用户控件SimpleEmailTemplate.ascx ,同时我将用户控件转换为SimpleEmailTemplate类型。现在我通过UserCredentialsCS的实例UserData 的属性UserName和PassWord给用户控件公共属性赋值。

当这些做完后,我实际上已经把控件作为html格式的E_mail来呈现。为了实现这个目的,我首先用了StringWriter类,它内在地采用了StringBuilder.这个类将把信息--SimpleEmailTemplate.ascx 的内容--转换成string类型。这里要注意最终的输出代码必须转换成适当的html代码。为了实现这个要求,我创建了Html32TextWriter 的一个实例,并把StringWriter 作为参数传入。

EmailTemplate 类(SimpleEmailTemplate 类的一个实例,它实际的包含着用户控件SimpleEmailTemplate .ascx的实例)的方法RenderControl呈现我的HtmlMailWriter.我创建了一个string类型的变量body,并将StringWriter 做类型转换后赋值给它。这样用户控件的内容就变成了我邮件的内容。

接下来就是创建一个MailMessage 的实例,给相关的属性赋值(比如"From","To","Body","Format")并且将信息发送给用户。如果在进行的过程中发生错误,将会报告给用户。如果因为用户填入了错误的E_mail而不能发送,用户将得到通知。

相关文章:

  • 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
相关资源
相似解决方案