VB邮件检查程序(二)

tan54294658

tan54294658

2016-02-19 21:09

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享VB邮件检查程序(二),希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
下面是Winsock的DataArrival事件中的代码。该代码的绝大部分是注释以向你解释程序所做的每一步。如果你觉得闷的话就跳过不看就是了。
  
  PrivateSubWinsock1_DataArrival(ByValbytesTotalAsLong)
  
  DimstrDataAsString
  
  StaticintMessagesAsInteger'要下载的消息数(也就是邮件数)
  StaticintCurrentMessageAsInteger'已下载的消息数
  StaticstrBufferAsString'正在下载的消息的缓冲
  
  将收到的数据存放在strData变量中
  Winsock1.GetDatastrData
  
  IfLeft$(strData,1)=" "Orm_State=POP3_RETRThen
  '如果来自服务器的回应的第一个字符为加号
  '表明服务器已收到你发出的命令并等待下一个命令
  '如果服务器返回的字符串的第一个字符为减号,那我们在这里就什么也做不了。
  '操作被转到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"&txtPassword&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))
  IfintMessages0Then
  '
  '如果邮箱中有邮件
  '改变进程的状态
  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->

展开更多 50%)
分享

猜你喜欢

VB邮件检查程序(二)

编程语言 网络编程
VB邮件检查程序(二)

VB邮件检查程序(一)

编程语言 网络编程
VB邮件检查程序(一)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Linux下用Mtrace来检查程序内存溢出

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux下用Mtrace来检查程序内存溢出

为你的VB程序程序加密(VB新手)

编程语言 网络编程
为你的VB程序程序加密(VB新手)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

扫雷程序“布雷”代码(vb)

电脑网络
扫雷程序“布雷”代码(vb)

用VB编写抽奖程序

编程语言 网络编程
用VB编写抽奖程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

怎样接收电子邮件(POP3协议简介)

怎样接收电子邮件(POP3协议简介)

HTML教程,简单学习HTML语言

HTML教程,简单学习HTML语言
下拉加载更多内容 ↓