Visual Basic 以其強大的功能為廣大軟件開發人員所喜愛隨著Internet的迅猛發展VB應用在網絡方面的開發也越來越多本文將介紹如何用VB設計一個自己的Email系統
檢查是否連通Internet
在設計自己的Email系統時我們需要檢測系統是否連通Internet下文通過編寫函數IsConnected來判斷Internet是否連通
在主程序中加入下列代碼
Private Sub Form_Load()
If IsConnected = True Then
MsgBox (您已經連通了Internet!)
End If
If IsConnected = False Then
MsgBox (您還沒有連通 Internet!)
End If
End Sub
將下面的代碼作為模塊放在程序中
Option Explicit
/有關注冊的API聲明和定義以便使用/
Public Declare Function RasEnumConnections Lib RasApidll Alias RasEnumConnectionsA (lpRasCon As Any lpcb As Long lpcConnections As Long) As Long
Public Declare Function RasGetConnectStatus Lib RasApidll Alias RasGetConnectStatusA (ByVal hRasCon As Long lpStatus As Any) As Long
/常數和變量的設定/
Public Const RAS_MaxEntryName =
Public Const RAS_MaxDeviceType =
Public Const RAS_MaxDeviceName =
Public Type RASCONN
dwSize As Long
hRasCon As Long
szEntryName(RAS_MaxEntryName) As Byte
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS_MaxDeviceName) As Byte
End Type
Public Type RASCONNSTATUS
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS_MaxDeviceName) As Byte
End Type
/函數IsConnected返回是否連通的狀態如果為True則表示已連通/
Public Function IsConnected() As Boolean
Dim TRasCon() As RASCONN
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS
TRasCon()dwSize =
lg = TRasCon()dwSize
RetVal = RasEnumConnections(TRasCon() lg lpcon)
If RetVal <> Then
MsgBox 錯誤
Exit Function
End If
TstatusdwSize =
RetVal = RasGetConnectStatus(TRasCon()hRasCon Tstatus)
If TstatusRasConnState = &&H Then
IsConnected = True
Else
IsConnected = False
End If
End Function
通過使用上面代碼我們可以很方便地了解目前的Internet是否處於連通狀態
設計接收郵件
在VB選單上點擊工程→部件彈出部件對話框在對話框的控件卡中選中Microsoft MAPI Controls 控件點擊確定按鈕使得工具箱上增加MAPIMessage和MAPISession兩個圖標
在Form上加入一個MAPIMessage控件取名為MAPIMeaasge;加入一個MAPISession控件取名為MAPISession;再加入三個Textbox控件分別取名為SubjectContent和Indexno 將它們的Caption分別改為郵件標題郵件內容和郵件索引號並在TextBox前各加入一個Label控件將Caption分別改為標題內容和索引號
將MAPIMessage的各項屬性設置如下
DownLoadMail=TRUE
LogonUI=TRUE
NewSession=FALSE
UserName=接收Email
在Form上加入一個按鈕(Getmail)將其Caption屬性改為接收郵件
在 Getmail_Click()中加入以下程序代碼程序的功能是使我們接收Email:
MAPIMessageFetch
FormCaption=MAPIMessageMsgCount
MAPIMessageMsgIndex=CINT(Indexnotext)
SubjecText = MAPIMessageMsgNoteText
ContentText = MAPIMessageMsgSubject
其中Fetch命令是將信件抓到系統存貯器的inbuffer中我們將信件抓回來後可以由MsgCount屬性知道信件數量接著可以用MsgIndex設置要看哪一封信件的內容標題
設計發送郵件
設計發送郵件部分時我們需要分兩步加以完成
Exchange各項參數的設置
進入Exchange系統選擇新增設置文件屏幕上會顯示所需要的信息服務選擇Internet Mail
設置文件的名稱為test屏幕會顯示兩個選項可以選擇以Modem方式或以Network方式連接筆者所用的是Modem方式所以選擇Modem
選擇Modem後Exchange會要求我們輸入Mail server的IP address在此輸入自己的IP地址接著將Transform Message的模式設置為Automatic這樣當我們連接到Mail服務器時新的信息會自動下載到Local端接下來將你所使用的Email地址全名口令和下載路徑等一步步設置好這樣就完成了Exchange各項參數的設置
程序設計
在VB選單上點擊工程→部件彈出部件對話框在對話框的控件卡中選中Microsoft MAPI Controls 控件點擊確定按鈕
在Form上加入一個MAPIMessage控件取名為MAPIMessage再加入一個MAPISession控件取名為MAPISession然後加入三個textbox控件取名為SubjectContent和Addr並在三個textbox前各加入一個Label最後將Caption分別改為標題內容和地址
將MAPIMessage的各項屬性設置如下
DownLoadMail=TRUE
LogonUI=TRUE
NewSession=FALSE
UserName=發送Email
這裡將DownLoadMail設置為TRUE當程序和Mail服務器第一次連接時會將新的Mail下載到Local端將LogonUI設置為TRUE則當程序中Logon名稱輸入錯誤時系統會顯示一個Message Box來讓你輸入正確的名稱由於這個程序僅使用到一條Session所以將NewSession設置成FALSE如果有許多Session要建立的話則將它設置成TRUEUserName中所填的是我們在Exchange中所新增的設置文件名稱如果沒有填內容的話系統將會顯示一些Message Box讓你輸入文件
在Form上加入三個按鈕LogonLogoff和Send並分別將它們的Caption改為登錄離網和發送
在 Logon_Click()中加入以下程序代碼程序的功能是使我們登錄到Mail服務器
MAPISessionSignOn
MAPIMessageSessionID = MAPISessionSessionID
MsgBox Your Id is + Str(MAPISessionSessionID)
其中MAPISessionSignOn是做登錄的動作在登錄時因為已經將MAPIMessage控件的DownLoadMail屬性設置為TRUE所以可以在屏幕上看到Message Box顯示系統正在下載Mail登錄成功後系統會傳回一個SessionID將該ID填入MAPIMessage的SessionID中這樣就可以利用這條Session來傳送Email
在Logoff_Click()中加入以下程序代碼程序的功能是使我們離開Mail服務器
MAPISSignOff
在Send_Click()中加入以下程序代碼程序的功能是使我們發送Email:
MAPIMessageCompose
MAPIMessageRecipDisplayName = Addrtext
MAPIMessageAddressResolveUI = True
MAPIMessageMsgSubject = Subjecttext
MAPIMessageMsgNoteText = Contenttext
MAPIMessageSend
MsgBox 您發送成功啦!
其中Compose命令的目的是使你可以改變RecipDisplayName的內容將所需傳送的Email地址主題和文章內容分別填入RecipDisplayNameMsgSubject和MsgNoteText接著用Send命令發送
用IE Mail程序測試
執行上面設計的Send程序在標題文本框中填入發信測試源碼天空在地址文本框中填入收信人的Email地址在內容文本框中輸入要傳送的內容這樣信件就發送出去了
From:http://tw.wingwit.com/Article/program/net/201311/12103.html