这个程序是这样的:vb连接pop3服务器,然后读取上面的邮件。每一封邮件会被存成一个txt文件放在本地硬盘上。但是有时候一封邮件不能完整地被保存下来,只能存一半,另外一半被存在了另外一个txt文件里。不管是长邮件还是短邮件都会发生这种情况。这到底是怎么回事?下面是我的代码。请高手指教。
Public i As Integer
Public msgCount As Integer
Public NumOfMail As Integer
Private Sub Command1_Click()
sockEmail.Close
sockEmail.RemoteHost = "pop3服务器"
sockEmail.RemotePort = 110
sockEmail.Connect
Do Until sockEmail.State = sckConnected
DoEvents: DoEvents: DoEvents
Loop
End Sub Private Sub sockEmail_DataArrival(ByVal bytesTotal As Long)
Dim sdata As String
Dim strbuffer As String
Dim filename As String
sockEmail.GetData sdata, vbString
If Left(sdata, 1) = "+" Or i = 4 Then
Select Case i
Case 0
i = 1
sockEmail.SendData "USER " & "用户名" & vbCrLf
Case 1
i = 2
sockEmail.SendData "PASS " & "密码" & vbCrLf
Case 2
i = 3
sockEmail.SendData "STAT" & vbCrLf
Case 3
NumOfMail = CInt(Mid(sdata, 5, InStr(5, sdata, " ") - 5))
If NumOfMail > 0 Then
msgCount = msgCount + 1
sockEmail.SendData "RETR 1" & vbCrLf
i = 4
Else
sockEmail.SendData "QUIT" & vbCrLf
sockEmail.Close
Exit Sub
End If
Case 4
strbuffer = strbuffer & sdata
filename = "message" & msgCount & ".txt"
Open CurDir & "\" & filename For Output As #1
Print #1, strbuffer
Close #1
strbuffer = ""
msgCount = msgCount + 1
sockEmail.SendData "RETR " & msgCount & vbCrLf
i = 4
If msgCount > NumOfMail Then
sockEmail.SendData "QUIT" & vbCrLf
sockEmail.Close
Exit Sub
End If
End Select
End If
End Sub
Public i As Integer
Public msgCount As Integer
Public NumOfMail As Integer
Private Sub Command1_Click()
sockEmail.Close
sockEmail.RemoteHost = "pop3服务器"
sockEmail.RemotePort = 110
sockEmail.Connect
Do Until sockEmail.State = sckConnected
DoEvents: DoEvents: DoEvents
Loop
End Sub Private Sub sockEmail_DataArrival(ByVal bytesTotal As Long)
Dim sdata As String
Dim strbuffer As String
Dim filename As String
sockEmail.GetData sdata, vbString
If Left(sdata, 1) = "+" Or i = 4 Then
Select Case i
Case 0
i = 1
sockEmail.SendData "USER " & "用户名" & vbCrLf
Case 1
i = 2
sockEmail.SendData "PASS " & "密码" & vbCrLf
Case 2
i = 3
sockEmail.SendData "STAT" & vbCrLf
Case 3
NumOfMail = CInt(Mid(sdata, 5, InStr(5, sdata, " ") - 5))
If NumOfMail > 0 Then
msgCount = msgCount + 1
sockEmail.SendData "RETR 1" & vbCrLf
i = 4
Else
sockEmail.SendData "QUIT" & vbCrLf
sockEmail.Close
Exit Sub
End If
Case 4
strbuffer = strbuffer & sdata
filename = "message" & msgCount & ".txt"
Open CurDir & "\" & filename For Output As #1
Print #1, strbuffer
Close #1
strbuffer = ""
msgCount = msgCount + 1
sockEmail.SendData "RETR " & msgCount & vbCrLf
i = 4
If msgCount > NumOfMail Then
sockEmail.SendData "QUIT" & vbCrLf
sockEmail.Close
Exit Sub
End If
End Select
End If
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货