<p >本文举例说明在ASP.NET中发送Email的众多可能性,内容覆盖了诸如Email格式、优先权、附件及Email编码等方面。<p >ASP.NET被赋予了一个发送Email的新对象,名为SmtpMail。使用SmtpMail对象从ASP.NET页面中发送Email时,可以遵循以下简单步骤:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"><ul><li>包含与邮件有关类所需要的名称空间;</li><li>例示一个信息对象,设置属性;</li><li>使用SmtpMail对象实例的send方法发送邮件。</li></ul></td></tr></table></ccid_nobr><p >现在我们就来一步一步地研究从一个ASP.NET页面发送Email的过程。我们使用了VB来说明这个例子,最后将包含VB和C#的完整代码。<p ><ccid_nobr><table width="100%" bgcolor="#f7f3f7" ><tr><td><font color="#000084">第一步:包含名称空间</font></td></tr></table></ccid_nobr><p >在ASP.NET 页面中引入System.Web.Util 名称空间,这个名称空间中包括了发送一个email所必须的所有对象。这些对象是:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"><b>SmtpMail</b>:代表邮件系统,用于发送email。<br/><b>MailMessage</b>:代表一个信息,其属性包括发件人地址、收件人地址等。<br/><b>MailFormat</b>:代表信息的格式:HTML、文本等。<br/><b>MailAttachment</b>:代表一个email附件。<br/><b>MailEncoding enum</b>:代表Base64 或Uuencode的任何编码。取值范围:Base64、UUencode<br/><b>MailPriority enum</b>:用来为信息设置优先权。值为:高、低、一般。<br/><b><% @Import Namespace = "System.Web.Util" %></b></td></tr></table></ccid_nobr><p ><ccid_nobr><table width="100%" bgcolor="#f7f3f7" ><tr><td><font color="#000084">第二步:例示 MailMessage 对象</font></td></tr></table></ccid_nobr><p >使用以下语句来例示MailMessage对象:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"> Dim mailObj AS new MailMessage</td></tr></table></ccid_nobr><p >用MailMessage对象的属性来准备邮件。MailMessage对象有下列属性:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"><b>From</b>:发件人的Email地址<br/><b>To</b>:收件人的Email地址<br/><b>Subject</b>:email的主题<br/><b>Body</b>:email的主体<br/><b>CC</b>:email抄送的收件人列表<br/><b>BCC</b>:email暗送的收件人列表<br/><b>riority</b>:信息的优先权:高、低或一般<br/><b>BodyEncoding</b>:信息体的编码,如果有的话,就是Base64或UUencode<br/><b>BodyFormat</b>:信息的格式:Html 或text<br/><b>Attachments</b>:附加到email 的MailAttachment对象列表,主要就是对这个对象集合的一个引用</td></tr></table></ccid_nobr><p >下面这段代码示范了使用MailMessage 对象属性的方法,它们代表了将在本例中创建的一个信息,这个信息要用SmtpMail对象来发送。在例子中,mailObj引用了信息对象的例示:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"> mailObj.From = "abc@mydomain.com"<br/>mailObj.To = Request.Form ("to")<br/>mailObj.Subject = "subject of the mail"<br/>mailObj.Body = "Message of the mail"</td></tr></table></ccid_nobr><p ><ccid_nobr><table width="100%" bgcolor="#f7f3f7" ><tr><td><font color="#000084">第三步:发送Email</font></td></tr></table></ccid_nobr><p >这时,我们就可以使用SmtpMail 对象的Send方法来发送邮件了:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"> SmtpMail.Send(mailObj)</td></tr></table></ccid_nobr><p ><ccid_nobr><table width="100%" bgcolor="#f7f3f7" ><tr><td><font color="#000084">完整实例</font></td></tr></table></ccid_nobr><p >最后,我们把以上解释的属性结合在一个完整的例子中。为了说明用ASP.NET 发送一个email 的全部可能性,我们还包含了一些“小技巧”。下面是使用VB.NET的完整例子:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"><%@page language="VB" %><br/><%@Import Namespace="System.Web.Util" %><br/><HTML><BODY><br/><SCRIPT LANGUAGE="VB" RUNAT="server"><br/>' This method is called on the server when the submit<br/>' button is clicked on the client and when the page<br/>' posts back to itself<br/>Sub SendMail (Obj As Object, E As EventArgs)<br/>' Instantiate a MailMessage object. This serves as a message object<br/>' on which we can set properties.<br/>Dim mailObj AS new MailMessage<br/>' Set the from and to address on the email<br/>mailObj.From = Request.Form("From")<br/>mailObj.To = Request.Form("To")<br/>mailObj.Subject = "Subject Of the Mail"<br/>mailObj.Body = "Body of the Mail"<br/>' Optional: HTML format for the email<br/>mailObj.BodyFormat = MailFormat.Html<br/>' Optional: Encoding for the message<br/>mailObj.BodyEncoding = MailFormat.Base64<br/>' Optional: Set the priority of the message to high<br/>mailObj.Priority = MailPriority.High<br/>' Optional: Attach a file to the email.<br/>' Note here that we have created a MailAttachment object to<br/>' attach a file to the email<br/>mailObj.Attachments.Add(new MailAttachment("c:\test.doc"))<br/>' Send the email using the SmtpMail object<br/>SmtpMail.Send(mailObj)<br/>End Sub<br/></SCRIPT><br/><asp:label ID="Headingmsg" Text="Enter Your Email Address:" RUNAT="server"/><br/><FORM METHOD="post" RUNAT="server"><br/>Email Recipient: <INPUT TYPE="text" NAME="to"> <br><br/>Email Sender: <INPUT TYPE="text" NAME="from"><br/><INPUT TYPE="submit" NAME="Submit" VALUE="Send Mail" RUNAT="server" OnServerClick="SendMail"><br/></FORM><br/></BODY></td></tr></table></ccid_nobr><p >在以上例子中,From(发件人)和 To(收件人)的Email地址是从相应的文本框中收集的,点击“Send Mail”(发送邮件)按钮时,邮件就被发送出去。当“Send Mail”(发送邮件)按钮被点击时,表单回递到它自己,在服务器上“SendMail”(发送邮件)程序被触发,邮件被发送。下面是使用C#的例子:<p ><ccid_nobr><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code"><%@page language="C#" %><br/><%@Import Namespace="System.Web.Util" %><br/><HTML><BODY><br/><SCRIPT LANGUAGE="C#" RUNAT="server"><br/>// This method is called on the server when the submit<br/>// button is clicked on the client and when the page<br/>// posts back to itself<br/>public void SendMail (Object Obj, EventArgs E)<br/>{<br/>// Instantiate a MailMessage object. This serves as a message object<br/>// on which we can set properties.<br/>MailMessage mailObj = new MailMessage();<br/>// Set the from and to address on the email<br/>mailObj.From = Request.Form("From");<br/>mailObj.To = Request.Form("To");<br/>mailObj.Subject = "Subject Of the Mail";<br/>mailObj.Body = "Body of the Mail";<br/>// Optional: HTML format for the email<br/>mailObj.BodyFormat = MailFormat.Html;<br/>// Optional: Encoding for the message<br/>mailObj.BodyEncoding = MailFormat.Base64;<br/>// Optional: Set the priority of the message to high<br/>mailObj.Priority = MailPriority.High;<br/>// Optional: Attach a file to the email.<br/>// Note here that we have created a MailAttachment object to<br/>// attach a file to the email<br/>mailObj.Attachments.Add(new MailAttachment("c:\\test.doc"));<br/>// Send the email using the SmtpMail object<br/>SmtpMail.Send(mailObj);<br/>}<br/></SCRIPT><br/><asp:label ID="Headingmsg" Text="Enter Your Email Address:" RUNAT="server"/><br/><FORM METHOD="post" RUNAT="server"><br/>Email Recipient: <INPUT TYPE="text" NAME="to"> <br><br/>Email Sender: <INPUT TYPE="text" NAME="from"><br/><INPUT TYPE="submit" NAME="Submit" VALUE="Send Mail" RUNAT="server" OnServerClick="SendMail"><br/></FORM><br/></BODY></td></tr></table></ccid_nobr><p >(责任编辑 <ccid_nobr>尤北</ccid_nobr>) <p align="center"></p></p>