您的位置:首页 >> 编程开发 >> .NET >> 其它 >> 正文
其它 RSS
 

Winsock POP3教程(二)

http://www.rdxx.com 05年07月27日 21:49 CSDN 我要投稿

标签: WinSock , pop3 , 教程
 
获取邮件


LIST命令和RETR命令
    LIST命令和RETR命令只能在“处理”状态下执行,就是说只有在用户登录以后才可以执行这两个命令。
LIST命令获得邮件服务器中的邮件列表。该命令的格式如下:

    LIST [msg]

    其中参数msg是可选的参数,该参数指定要列举的邮件的编号,该参数不能指定为一个已经标记为删除的邮件的编号。
    如果没有指定参数而且命令调用成功,邮件服务器首先会返回服务器中的所有邮件列表,这个列表以一个+OK开头的字符串作为起始。对于

邮件服务器中的每一个邮件,邮件服务器都会返回一行字符串,为了便于分析,这行字符串应该由邮件编号 + 一个空格 + 邮件的尺寸 组成。

在邮件列表的结尾,邮件服务器会返回一个vbCRLF + "." + vbCRLF的字符串作为列表的结尾。例如在教程一中点击“邮件列表”按钮在文本框

中输出的字符串所示。
    
注意:不同的邮件服务器返回的内容可能有所不同,有些邮件服务器返回的信息会更多一些(例如在+OK后面返回总邮件数和邮件总尺寸等)。

但是标准的POP3协议所描述的返回内容只有上面这些,所以在开发过程中需要注意,不要把一些邮件服务器所返回的附加内容作为标准在你的

代码里面实现,这样的话可能在其他邮件服务器上面就通不过。


RETR命令获得邮件服务器中的邮件内容,该命令的格式如下:

    RETR msg

    其中参数msg是必选的参数,该参数指定要获得的邮件的编号,该参数不能指定为一个已经标记为删除的邮件的编号。
    如果命令调用成功,邮件服务器会返回指定的邮件的内容,返回的内容头一行是+OK,然后是邮件内容,最后是一个vbCRLF + "." +

vbCRLF的字符的串作为结尾。

    在Winsock编程中,对于LIST命令和RETR命令,服务器返回的内容是分多次返回的,所以会多次触发DataArrival事件,所以需要在程序中

设置命令状态,在发出LIST或者RETR命令后将程序的状态置于LIST或者RETR状态下,在这个状态下所有收到的内容都是服务器返回的响应的组

成部分,直到收到结束字符串vbCRLF + "." + vbCRLF。


    下面是如何通过Winsock发送LIST命令和RETR命令获得邮件列表以及获取邮件内容,在教程一的窗体中再增加一个CommandButton按钮,

Name属性为:cmdRETR。


Enum enumPOPCommand
    popUSER = 1
    popPASS = 2
    popQUIT = 3
    popLIST = 4
    popDELETE = 5
    popRETR = 6
    popNONE = 999
End Enum

Private m_Command As enumPOPCommand
Private m_MailLists As New Collection
Private m_Messages As String
Private m_MailMessage As String
Private m_MessageCout As Integer

Sub strListsToCollection(strLists As String, coll As Collection)
    Dim s() As String
    Dim i As Integer
    Dim count As Integer
    
    s = Split(strLists, vbCrLf)
    
    '获得邮件列表和邮件数
    For i = LBound(s) To UBound(s)
        If (Trim(s(i)) <> "") And (Trim(s(i)) <> ".") Then
            coll.Add Trim(s(i))
            count = count + 1
        End If
    Next i
    

9 7 3 1 2 3 4 8 :


 
 
打印本文
 
 
  相关资讯
RSS
 
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站