完成ASP文件在線發(fā)郵件
發(fā)表時(shí)間:2024-06-07 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]筆者在實(shí)踐中利用ASP的COM組件功能,在VB中實(shí)現(xiàn)了一個(gè)發(fā)郵件的小組件,在ASP中只通過輕松調(diào)用,就可以實(shí)現(xiàn)該功能。所有郵件處理機(jī)制都被封裝在這個(gè)組件中,使用起來極為方便。下面將詳細(xì)介紹該組件的基本開發(fā)原理以及在ASP中的應(yīng)用。 1. 利用Winsock控件與發(fā)送郵件的SMTP聯(lián)系 和S...
筆者在實(shí)踐中利用ASP的COM組件功能,在VB中實(shí)現(xiàn)了一個(gè)發(fā)郵件的小組件,在ASP中只通過輕松調(diào)用,就可以實(shí)現(xiàn)該功能。所有郵件處理機(jī)制都被封裝在這個(gè)組件中,使用起來極為方便。下面將詳細(xì)介紹該組件的基本開發(fā)原理以及在ASP中的應(yīng)用。
1. 利用Winsock控件與發(fā)送郵件的SMTP聯(lián)系
和SMTP的聯(lián)系包括握手、發(fā)送數(shù)據(jù)以及關(guān)閉等全過程,主要程序如下:
建立一個(gè)frmsendmail 的窗體,其中包含一個(gè)Winsock控件,有以下幾個(gè)公共變量:
Public mSTMP As String
//發(fā)送郵件的STMP
Public mFrom As String
//FROM 地址
Public mTo As String
//到達(dá)地址
Public mSubject As String
//郵件主題
Public mText As String
//郵件正文
Sock.Connect mSTMP, 25
//和發(fā)送郵件的STMP建立聯(lián)系
Private Sub Sock_Connect()
SFlag = sfConn
//連接成功后設(shè)置參數(shù)
End Sub
Private Sub Sock_DataArrival(ByVal bytesTotal As Long)
On Error GoTo daErr
Dim s As String
Sock.GetData s
Select Case SFlag
Case sfStart
Case sfConn
SFlag = sfHelo
//發(fā)出握手信息HELLO
Send "HELO " && mMyname
Case sfHelo
SFlag = sfFrom
Send "MAIL FROM:" && GetReal(mFrom)
Case sfFrom
If Left(s, 3) 〈〉 "250" Then GoTo SrvErr
//如果成功發(fā)送接收郵件地址
SFlag = sfRcpt
Send "RCPT TO:" && GetReal(mTo)
Case sfRcpt
If Left(s, 3) 〈〉 "250" Then GoTo SrvErr
//如果成功開始發(fā)送數(shù)據(jù)
SFlag = sfData
Send "Data"
Case sfData
If Left(s, 3) 〈〉 "354" Then GoTo SrvErr
SFlag = sfSendOver //數(shù)據(jù)包括4項(xiàng),最后以 . 結(jié)束
Send "From: " && mFrom
Send "To: " && mTo
Send "Subject: " && mSubject && vbCrLf
Send mText
Send "."
Case sfSendOver
If Left(s, 3) 〈〉 "250" Then GoTo SrvErr
SFlag = sfStart
SendOk = True
Send "Quit"
End Select
Exit Sub
End Sub
2. 將上述功能封裝在一個(gè)類中
由于ASP能使用的組件中不能存在控件,所以要通過類模塊來封裝上述窗體。首先在類初始化時(shí)建立一窗體:
Private Sub Class_Initialize()
Set frm = New frmSendMail
End Sub
把窗體的公共變量作為屬性封裝在類模塊中。
該窗體的函數(shù)接口為:
Public Sub Send()
frm.SendStart
End Sub
3. 注冊該組件
將上述工程編譯成DLL文件,通過VB注冊或手工注冊都可以。
4. 在ASP中的應(yīng)用
調(diào)用方法如下:
Set sMail=Server.CreateObject("SendMailX.Mail")
sMail.STMP="166.166.1.1"
sMail.LogFile="e:\Logs\mail.log"
sMail.mFrom = mFromName && " 〈" && mFromAddr && "〉"
sMail.mTo = mToName && " 〈" && mToAddr && "〉"
sMail.mSubject = mSubject
sMail.mText = mText
sMail.Send
其中變量可以通過賦值,也可以來自上一個(gè)request頁面。
由于版面所限,不能詳細(xì)敘述,需要此組件的朋友可以到http://flyfly.533.net的軟件編程欄目上下載。