程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB郵件檢查程序(一)

VB郵件檢查程序(一)

編輯:VB綜合教程
按下表所示設置各控件的屬性。
  
  控件名稱描述
  TextboxtxtHost用於輸入郵件服務器的名稱或地址
  TextboxtxtUserName輸入用戶名
  TextboxtxtPassword輸入密碼
  TextboxtxtBody顯示郵件內容
  ListviewlvMessages顯示郵件清單
  CommandButtoncmdCheckMail用於啟動接收並顯示郵件的子程序
  CommandButtoncmdExit退出程序
  
  將名為txtBody的文本框的Multiline屬性設為True,Scrollbars屬性設為3-Both。選擇ListView控件,打開其屬性對話框,在“列首”標簽頁中插入四個列,文本分別為:"From","Subject","Date","Size",然後將該控件的View屬性設為3-lvwReport。
  
  直觀的界面顯示你是如何使用本程序的。首先輸入郵件服務器的名稱或地址,然後是你的用戶名和密碼。最報按檢查郵件按鈕。接下來,我們就會看到在ListView中顯示的郵件列表了。點選其中的一項,郵件的內容就會顯示在下面的文本框中。
  
  從程序的外觀及VB由事件驅動的本質,我們可以猜出我們只需要處理兩個事件:cmdCheckMail_Click和lvMessages_ItemClick.至於cmdExit中的事件我想就不必說了。先別急,讓我們一步步來看看本程序的代碼是怎樣的。首先看看“檢查郵件”按鈕。當你按下這個按鈕後,程序會首先檢查文本框中的內容,然後調用Winsock的Connect方法連上遠程服務器。下面是程序代碼:
  
  PrivateSubcmdCheckMail_Click()
  
  '檢查除txtBody之外所有文本框的內容是否為空
  ForEachcInControls
  IfTypeOfcIsTextBoxAndc.Name<>"txtBody"Then
  IfLen(c.Text)=0Then
  MsgBoxc.Name&"can'tbeempty",vbCritical
  ExitSub
  EndIf
  EndIf
  Next
  '改變當前進程狀態的值
  m_State=POP3_Connect
  '關閉socket以防它已被另一個進程打開
  Winsock1.Close
  '重置localport的值,WindowsSocket會自動尋找一個新值
  '這樣做是為了防止出現"地址正在被使用"的錯誤,
  '這種情況通常出現在Winsock控件已被前一個進程所使用
  Winsock1.LocalPort=0
  'POP3服務器通常用端口110來等待連接請求
  '因此我們要讓Winsock控件用這個端口連上服務器。
  Winsock1.ConnecttxtHost,110
  
  EndSub
  
  除了下面這個語句之外,其它都一目了然。
  
  m_State=POP3_Connect
  
  現在就讓我來解釋一下這個語句。當觸發了cmdCheckMail_Click事件後,所運行的程序代碼的目的是要連上遠程郵件服務器。下面要進行的操作就轉由在Winsock控件的DataArrival事件中的代碼來控制了。
  
  每次當Winsock收到數據時,都會觸發DataArrival事件。根據已收到的數據和你所發出的命令,程序才知道應執行在該事件中的哪一部分代碼,以真正完成數據的接收。
  
  為了讓程序記住你上次發出的命令,或者說當前進程的狀態,我們使用了m_State變量。該變量存放你事先定義好的一個特殊的數據類型:POP3States的值。
  
  PrivateEnumPOP3States
  POP3_Connect
  POP3_USER
  POP3_PASS
  POP3_STAT
  POP3_RETR
  POP3_DELE
  POP3_QUIT
  EndEnum->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved