用socket连接pop3服务器,字符编码我采用Encoding.ASCII。
1. 发送指令 user <username>\r\n
得到+OK
2. 发送指令 pass <password>\r\n
得到+OK
3. 发送指令 list\r\n
这时,如果马上去socket.Receive(bytes),有时只能取得+OK\r\n,
而不能取得完整的数据包,虽然可以通过socket.Available进行判断到达的数据量,但有时还是取得错误的数据。
因此,在发送完 list 指令后,建议用Thread.Sleep(100)延迟一下,再去接收socket数据。
用retr <n>\r\n来接收邮件内容时,也最好建立延迟。
pop3服务器有超时时间限制,应几秒钟闲时就发个noop指令以保持连接。