<SCRIPT language=VB RUNAT="server"> Sub SendMail(Obj As Object, E As EventArgs) lbmsg.Text=""
Dim mailObj AS new MailMessage Dim smtp AS new SmtpMail '定义SMTP服务器的名称 Smtp.smtpserver="127.0.0.1" '定义邮件的发送地址 mailObj.From=sendmailbox.value '定义邮件的接收地址 Dim conn AS OleDbConnection conn=connectdb("data\mail.mdb") conn.open() Dim reader As oledbdatareader reader=readdb(conn,"select * from mail")
while (reader.read()) try mailObj.To=reader("mail")
mailObj.Subject =subject.value mailObj.Body =content.value '默认发送邮件格式为纯文本TEXT,如果选择HTML格式,设置为HTML格式 if mode.value="HTML" then mailObj.BodyFormat=MailFormat.Html end if '设置邮件发送级别为高 mailObj.Priority = MailPriority.High
Smtp.Send(mailObj)
lbmsg.text=lbmsg.text+reader("mail")+"OK!Time:"+Now().ToString()+"<br>" catch er as Exception lbmsg.text=lbmsg.text+er.message+"<br>" finally End Try End While reader.close() Dim strwriterobj As StreamWriter try strwriterobj= File.CreateText(Server.MapPath("log\")+subject.value+".htm") strwriterobj.Write("<HTML><head><meta http-equiv='Content-Language' content='zh-cn'><meta http-equiv='Content-Type' content='text/html; charset=gb2312'></head><BODY>"+lbmsg.text+"</BODY></HTML>") catch er as Exception lbmsg.text=lbmsg.text+er.message+"<br>" finally strwriterobj.close lbmsg.text=lbmsg.text+"日志保存成功!保存目录:<br>"+Server.MapPath("log\")+subject.value+".htm" End Try End Sub
'链接数据库 'www.knowsky.com Function ConnectDB(txtdatabase AS String) As Oledbconnection Dim conn AS OledbConnection Dim connstr As String connstr="Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False; Data Source=" +Server.MapPath(txtdatabase) connectdb=New OledbConnection(connstr) End Function
'读取一条记录 Function readdb(conn As Oledbconnection,txtsql As String) As OledbDataReader Dim cmd As OledbCommand cmd=new oledbcommand(txtsql,conn) readdb=cmd.executereader() End Function </SCRIPT>
在以上的程序中,我们将一些比较常见的功能设置成为函数,在主体程序中直接调用这些函数,这样,程序看起来比较简洁,修改也很简单。在这里,我们简单介绍一下这些函数,一是连接数据库的ConnectDB(txtdatabase AS String),这个函数使用Access数据库的相对位置作为函数参数,返回数据库连接OleDbConnection;函数readdb(conn As Oledbconnection,txtsql As String)可以直接执行一条SQL语句,返回OledbDataReader。在程序中,我们将每一个邮件发送的结果保存并且最好生成一个HTML格式的日志文件。因为程序中我们用到了数据库、电子邮件和文件操作,以此,在引入名字空间的时候,我们需要将“System.Data.OleDb”、“System.Web.Mail”和“System.IO”引入。