国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VB郵件檢查程序(二)

2019-11-18 17:27:37
字體:
來源:轉載
供稿:網友
下面是Winsock的DataArrival事件中的代碼。該代碼的絕大部分是注釋以向你解釋程序所做的每一步。如果你覺得悶的話就跳過不看就是了。

'如果來自服務器的回應的第一個字符為加號
'表明服務器已收到你發出的命令并等待下一個命令
'如果服務器返回的字符串的第一個字符為減號,那我們在這里就什么也做不了。
'操作被轉到ELSE后面部分的代碼。
'當處于數據接收狀態時,來自服務器的字符串的第一個字符就可能不是加號或減號,所以要用到第二個條件
'm_State=POP3_RETR(正在接收消息的狀態)
SelectCasem_State
CasePOP3_Connect
'
'重置消息數
intMessages=0
'
'改變進程狀態
m_State=POP3_USER
'
'向服務器發出帶參數的USER命令
'參數是信箱名
'別忘了在命令的最后加上vbCrLf
Winsock1.SendData"USER"&txtUserName&vbCrLf
'這是本次事件的結束,下次開始跳過上一部分,而從下面開始執行
'CasePOP3_USER部分
CasePOP3_USER

'如果用戶名檢查通過就進行下一部分
'現在向服務器發送你的密碼

'改變進程的狀態
m_State=POP3_PASS
'
'向服務器發送PASS命令,以你的密碼為參數
Winsock1.SendData"PASS"&txtPass
Word&vbCrLf
CasePOP3_PASS
'
'如果服務器通過了你的身份驗證,我們就可以向服務器發送STAT命令了
'作為對STAT的回應,服務器會傳回你郵箱中的消息數及大小
'
'改變當前進程的狀態
m_State=POP3_STAT
'
'現在發送STAT命令
Winsock1.SendData"STAT"&vbCrLf
CasePOP3_STAT
'
'服務器對STAT的回應看上去象這樣
'" OK00"(郵箱中沒有郵件)或" OK37564"
'(郵箱中有郵件).顯然,我們必須找到來自服務器返回的字符串中的第一個數字

intMessages=CInt(Mid$(strData,5,InStr(5,strData,"")-5))
IfintMessages>0Then
'
'如果郵箱中有郵件
'改變進程的狀態
m_State=POP3_RETR
'
intCurrentMessage=intCurrentMessage 1
'
'現在準備向服務器發送RETR命令
'以便接收第一條消息
Winsock1.SendData"RETR1"&vbCrLf
Else
'如果郵箱中沒有郵件就斷開同服務器的連接結束進程

m_State=POP3_QUIT
Winsock1.SendData"QUIT"&vbCrLf
MsgBox"Youhavenotmail.",vbInformation
EndIf
CasePOP3_RETR
'在接收郵件時執行下面執行下面的代碼
'郵件可能會很大,并觸發多次DataArrival事件
'接收到的數據被存放在strBuffer變量中
strBuffer=strBuffer&strData
'
'用下面的語句判斷消息的結束
'郵件是以小數點結尾的
IfInStr(1,strBuffer,vbLf&"."&vbCrLf)Then
'
'郵件下載完畢
'
'刪除由服務器返回的第一行字符串
strBuffer=Mid$(strBuffer,InStr(1,strBuffer,vbCrLf) 2)
'
'刪除最后一個只有小數點的字符
strBuffer=Left$(strBuffer,Len(strBuffer)-3)
'
'把消息存放在m_colMessages集合中
Setm_oMessage=NewCMessage
m_oMessage.CreateFromTextstrBuffer
m_colMessages.Addm_oMessage,m_oMessage.MessageID
Setm_oMessage=Nothing
'
'清空緩沖,準備接收下一條郵件
strBuffer=""
'
'將已收的郵件數同服務器目前的郵件數作比較
IfintCurrentMessage=intMessagesThen
'如果相等,表示已接收完所有的郵件
'所以發送一個QUIT命令給服務器
m_State=POP3_QUIT
Winsock1.SendData"QUIT"&vbCrLf
Else
'如果二者不等,表明還有郵件沒有接收

intCurrentMessage=intCurrentMessage 1
'
'改變當前進程的狀態
m_State=POP3_RETR
'
'向服務器發出RETR命令接收下一個郵件
Winsock1.SendData"RETR"&CStr(intCurrentMessage)&vbCrLf
EndIf
EndIf
CasePOP3_QUIT
'不管我們收到什么樣的郵件,記得關閉同服務器的連接
Winsock1.Close
'現在調用ListMessages子程序,以便在ListView中顯示收到的郵件
CallListMessages
EndSelect
Else
'下面的錯誤處理的代碼
'只須關閉socket并將來自服務器的回應顯示出來就行了。
'即使是那些高級的郵件接收程序所做也不外如此
Winsock1.Close
MsgBox"POP3Error:"&strData,_
vbExclamation,"POP3Error"
EndIf

EndSub

一切看上去都一目了然,除了下面的語句:

Setm_oMessage=NewCMessage
m_oMessage.CreateFromTextstrBuffer
m_colMessages.Addm_oMessage,m_oMessage.MessageID
Setm_oMessage=Nothing->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥化市| 霍州市| SHOW| 大丰市| 安徽省| 九龙城区| 樟树市| 兖州市| 若羌县| 平原县| 广东省| 中西区| 应用必备| 革吉县| 福贡县| 进贤县| 保定市| 手游| 汤阴县| 大同县| 溆浦县| 阿瓦提县| 铜梁县| 罗甸县| 南部县| 从江县| 怀宁县| 登封市| 广元市| 韶关市| 宁化县| 青州市| 苍南县| 海城市| 恭城| 长乐市| 洛扎县| 漠河县| 大理市| 兴山县| 玉山县|