如果要你用ASP来做一个E-mail发送系统,你首先想到的一定是借助第三方开发的组件,但这样做会耗费你很多的银子。当然你也可以用Windows的自带的对象--CDONTS.NewMail对象来传送E-mail,这虽然是免费的,但却十分依赖操作平台,CDONTS.NewMail对象只存在Windows 200和NT底下,在Windows 95/98底下是没有这个对象。 自从Microsoft公司推出了ASP.NET,E-mail的发送已经成为WEB程序设计的基本对象。本篇文章就是来讨论如何做一个功能十分完备的E_mai的发送系统。 一.开发和运行平台 Windows 2000 Professional、.Net FrameWork Beta 2 二.什么样的E-mail发送系统才是一个功能十分完备系统 只有当一个邮件发送系统具备了:收件人地址、发信人地址、抄送地址、密送地址、邮件主题、邮件主体、和附件等功能时,这个邮件发送系统才是一个比较完备的系统。
下面就介绍实现这些功能的具体步骤。 三.具体实现步骤 首先要介绍.Net FrameWork SDK中的一个关于E-mail发送的Class Library(类库)--System.Web.Mail。这个Class library提供了E-mail发送的所有对象、属性和方法。其中最重要的对象是MailMessage对象和SmtpMail对象。MailMessage对象主要是包装E-mail的各个结构。譬如:收件人地址、发信人地址等。SmtpMail对象主要是把已经定义好的MailMessage对象发送出去。下面就一些重要的步骤具体说明一下: 1.为了定义MailMessage对象,首先要创立一个MailMessage对象。通过下面语句就可以创立一个MailMessage对象。 
   < % @Import Namespace="System.Web.Mail" 
   Dim MailObj as New MailMessage() %> 2.有了一个MailMessage对象后,下面就来定义邮件的结构。我们按照上图的邮件结构顺序来逐个定义。 
   1>.邮件的发送地址: 
   MailObj.form="发送地址" 
   2>.邮件的目的地址: 
   MailObj.to="目的地址" 
   如果你要发送给多个人,用逗号分开每个邮件地址。 
   3>.邮件的抄送地址: 
   MailObj.cc="抄送地址" 
   同样的,如果你要发送给多个人,可以在"抄送地址"上,写上多个邮件地址,但要用逗号把他们分开。 
   4>.邮件的密送地址: 
   MailObj.bcc="密送地址" 
   密送地址和抄送地址类似 
   5>.邮件主题: 
   MailObj.subject="邮件主题" 
   6>.邮件内容: 
   MailObj.Body="邮件内容" 
   7>.邮件的优先级: 
   MailObj.Priority = MailPriority.Normal '这是把邮件的优先级定义为普通,你也可以定义为高(high)、低(low) 
   8>.定义邮件格式: 
   MailObj.BodyFormat = MailFormat.Text '这是把邮件定义为文本格式,你也可以把邮件定义为超文本格式,只有把MailFormat.Text改成MailFormat.Html即可。 
   9>.给邮件添加一个附件: 
   用过ASP的人都了解,要想浏览一下文件是多么困难的事情。但ASP.NET出现以后,这一切就变的简单起来。只用下面一行代码,就可以选择驱动器的任何文件。 
< input id="Emailfile" type="file" runat="server" size="40" /> 3.发送E-mail SmtpMail.SmtpServer = "" '指定使用缺省的SMTP服务器 
   SmtpMail.Send(MailObj) '发送E-mail 
四.程序完整的源代码 < % @Import Namespace="System.Web.Mail" %> 
   < script language="vb" runat="server"> 
   Sub SendButton_Click(sender as Object, e as EventArgs) 
   '创立一个 MailMessage 对象 
   Dim MailObj as New MailMessage() 
   '以下是设定MailMessage 对象的属性,及程序的一些常规判断。 
   '设定邮件的发送地址 
   if EmailFrom.text< >"" then MailObj.From = EmailFrom.text 
   '设定邮件的目的地址 
   if EmailTo.text< >"" then MailObj.To = EmailTo.text 
   '设定邮件的抄送地址 
   if EmailCc.text< >"" then MailObj.Cc = EmailCc.text 
   '设定邮件的密送地址 
   if EmailBcc.text< >"" then MailObj.Bcc = EmailBcc.text 
   '设定邮件格式是文本格式,如果要设定成超文本,把MailFormat.Text改成 MailFormat.Html 
   MailObj.BodyFormat = MailFormat.Text 
   '设定邮件优先级,可为 High(高), Low(低), Normal(普通) 
   MailObj.Priority = MailPriority.Normal 
   '设定邮件主题 
   MailObj.Subject = EmailSubject.text 
   '设定邮件内容 
   MailObj.Body = EmailBody.text 
   '给邮件增加一个附件 
   Dim strFileName as string 
   strFileName=Emailfile.PostedFile.FileName 
   if strFileName< >"" then MailObj.Attachments.Add(new MailAttachment(strFileName)) 
   '指定使用缺省的SMTP服务器 
   SmtpMail.SmtpServer = "" 
   '现在开始发送邮件 
   SmtpMail.Send(MailObj) 
   panelSendEmail.Visible = false 
   panelMailSent.Visible = true 
   End Sub 
   < /script> 
   < html> 
   < body> 
   < asp:panel id="panelSendEmail" runat="server"> 
   < form Method="Post" EncType="Multipart/Form-Data" runat="server"> 
   < h2>欢迎用ASP.NET来发送E-mail< /h2> 
   < b>请输入邮件发送地址:< /b> 
   < asp:textbox id="EmailFrom" size="30" runat="server" /> 
   < p> 
   < b>请输入邮件目的地址:< /b> 
   < asp:textbox id="EmailTo" size="30" runat="server" /> 
   < p> 
   < b>请输入邮件抄送地址:< /b> 
   < asp:textbox id="EmailCc" size="30" runat="server" /> 
   < p> 
   < b>请输入邮件密送地址:< /b> 
   < asp:textbox id="EmailBcc" size="30" runat="server" /> 
   < p> 
   < b>请输入邮件主题:< /b> 
   < asp:textbox id="EmailSubject" size="30" runat="server" /> 
   < p> 
   < b>请输入邮件主体:< /b> 
   < asp:textbox id="EmailBody" TextMode="MultiLine" 
   Columns="40" Rows="10" runat="server" /> 
   < p> 
   < b>请加入附件名称:< /b> 
   < input id="Emailfile" type="file" runat="server" size="40" /> 
   < asp:button runat="server" id="SendButton" Text="发送" 
   OnClick="SendButton_Click" /> 
   < /form> 
   < /asp:panel> 
   < asp:panel id="panelMailSent" runat="server" Visible="False"> 
   您的邮件已经成功发送,欢迎您的再次使用! 
   < /asp:panel> 
   < /body> 
   < /html> 五.至此一个完整的E-mail发送系统就完成了。如果你的机器达到了本文前面提到的运行环境,那么就建立一个指向此aspx文件的虚拟目录,连接上Internet,在浏览器里运行此程序,就可以方便的完成E-mail的发送了。 

解决方案 »

  1.   

    大名鼎鼎的jmail干嘛放着不用,多简单的事啊
      

  2.   

    一看就是从其它地方复制的,影响小朋友,照着做了半天,却发现发不出去..
    Imports System.Net.Mail  
    '  //emailaddress邮件接收者地址
        ' //mailcontent邮件主体内容
        ' //mailtitle邮件标题
        '  //mailsubject邮件主题    Shared Function SendMail(ByVal emailaddress As String, ByVal mailcontent As String, ByVal mailtitle As String, ByVal mailsubject As String) As Boolean
            Dim onemail As New MailMessage()
            Dim myEmail As String = "邮箱地址@163.com"
            Dim Emailname As String = "邮箱地址"  
            '发送邮件的邮箱地址 
            Dim myPwd As String = "邮箱密码"
            '发送邮件的邮箱密码 
            onemail.BodyEncoding = System.Text.Encoding.UTF8
            onemail.IsBodyHtml = True
            onemail.From = New MailAddress(myEmail)
            onemail.[To].Add(New MailAddress(emailaddress))
            onemail.Subject = mailsubject
            onemail.Body = mailcontent
            onemail.BodyEncoding = System.Text.Encoding.UTF8
            Dim clint As New SmtpClient("smtp.163.com")
            '发送邮件的服务器 
            clint.UseDefaultCredentials = False
            clint.Credentials = New System.Net.NetworkCredential(Emailname, myPwd)
            clint.DeliveryMethod = SmtpDeliveryMethod.Network
            Try
                clint.Send(onemail)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    放到类中,想什么时候用什么时候用,也用不着写什么界面!