最后要實現的功能是郵件的編輯和發送。這部分功能由Email_List.asp文件提供,其界面如圖6所示。接下來我們就來分析這個文件。 Email_List.asp的內部工作過程和edit_record.asp很類似。管理員在表單中寫作郵件并提交它,系統將選擇所有Mail_List字段值為“是”的記錄,然后將新郵件的拷貝發送給這些記錄中的Guest_Mail地址。 每一次發送郵件我們都重新創建mailer對象,發送完成后關閉它。這一點非常重要,這是由于我們需要修改郵件的正文,加入取消訂閱郵件列表的URL和ID號。 if Request.ServerVariables("REQUEST_METHOD") = "POST" then strSubject = Request.Form("txtSubject") strBody = Request.Form("txtBody") strFrom = Request.Form("txtFrom") ' 從數據庫選取收件人記錄 strSQL_SelectEmail = "SELECT Guests.Guest_ID, Guests.Guest_Email " & _ " FROM Guests WHERE ((Guests.Mail_List)=-1);" Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open strDSNPath Set rsMail = oConn.Execute(strSQL_SelectEmail) if rsMail.BOF = True and rsMail.EOF = True then ...數據庫為空提示,略... else rsMail.MoveFirst Do While Not rsMail.EOF ' 創建對象 Set Mailer = Server.CreateObject("SMTPsvg.Mailer") ' 填寫其它郵件標題信息 Mailer.FromName = strFrom Mailer.FromAddress = strEmailFrom Mailer.RemoteHost = strHost Mailer.Subject = strSubject Mailer.BodyText = ...設置郵件內容,略... strTo = rsMail.Fields("Guest_Email").Value If strTo < > "" then Mailer.Recipient = strTo if Mailer.SendMail then ...發送成功提示,略... else ...發送失敗提示,略... end if 'Mailer.SendMail end if 'strTo < > "" rsMail.MoveNext Set Mailer = Nothing Loop end if 'rsMail.BOF = True and rsMail.EOF = True rsMail.Close Set rsMail = Nothing oConn.Close Set oConn = Nothing end if 'REQUEST_METHOD = "POST" 這里需要注意的是,我們將變量strHost的值賦給ASPMail的實例對象的RemoteHost屬性。因此,必須保證strHost的值是一個合適的郵件服務器名字(如mail.mydomain.com)。
|