完成ASP文件在線發郵件
發表時間:2024-06-07 來源:明輝站整理相關軟件相關文章人氣:
[摘要]筆者在實踐中利用ASP的COM組件功能,在VB中實現了一個發郵件的小組件,在ASP中只通過輕松調用,就可以實現該功能。所有郵件處理機制都被封裝在這個組件中,使用起來極為方便。下面將詳細介紹該組件的基本開發原理以及在ASP中的應用。 1. 利用Winsock控件與發送郵件的SMTP聯系 和S...
筆者在實踐中利用ASP的COM組件功能,在VB中實現了一個發郵件的小組件,在ASP中只通過輕松調用,就可以實現該功能。所有郵件處理機制都被封裝在這個組件中,使用起來極為方便。下面將詳細介紹該組件的基本開發原理以及在ASP中的應用。
1. 利用Winsock控件與發送郵件的SMTP聯系
和SMTP的聯系包括握手、發送數據以及關閉等全過程,主要程序如下:
建立一個frmsendmail 的窗體,其中包含一個Winsock控件,有以下幾個公共變量:
Public mSTMP As String
//發送郵件的STMP
Public mFrom As String
//FROM 地址
Public mTo As String
//到達地址
Public mSubject As String
//郵件主題
Public mText As String
//郵件正文
Sock.Connect mSTMP, 25
//和發送郵件的STMP建立聯系
Private Sub Sock_Connect()
SFlag = sfConn
//連接成功后設置參數
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
//發出握手信息HELLO
Send "HELO " && mMyname
Case sfHelo
SFlag = sfFrom
Send "MAIL FROM:" && GetReal(mFrom)
Case sfFrom
If Left(s, 3) 〈〉 "250" Then GoTo SrvErr
//如果成功發送接收郵件地址
SFlag = sfRcpt
Send "RCPT TO:" && GetReal(mTo)
Case sfRcpt
If Left(s, 3) 〈〉 "250" Then GoTo SrvErr
//如果成功開始發送數據
SFlag = sfData
Send "Data"
Case sfData
If Left(s, 3) 〈〉 "354" Then GoTo SrvErr
SFlag = sfSendOver //數據包括4項,最后以 . 結束
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. 將上述功能封裝在一個類中
由于ASP能使用的組件中不能存在控件,所以要通過類模塊來封裝上述窗體。首先在類初始化時建立一窗體:
Private Sub Class_Initialize()
Set frm = New frmSendMail
End Sub
把窗體的公共變量作為屬性封裝在類模塊中。
該窗體的函數接口為:
Public Sub Send()
frm.SendStart
End Sub
3. 注冊該組件
將上述工程編譯成DLL文件,通過VB注冊或手工注冊都可以。
4. 在ASP中的應用
調用方法如下:
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
其中變量可以通過賦值,也可以來自上一個request頁面。
由于版面所限,不能詳細敘述,需要此組件的朋友可以到http://flyfly.533.net的軟件編程欄目上下載。