Richard87 Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Jeg holder pa og lager en POP3 client i vb, jeg bruker CSOCKETMASTER, til og designe programmet... men i case 4(mottat mail), sa blir responsen fra forrige kommando lagret i cMail, ikke selve mailen, kan noen test programmet og se om det samme er tilfellet oss dere? btw, har lagt til hele sourcen.. Her er DataReceived functionen: Private Sub wsMain_DataArrival(ByVal bytesTotal As Long) Dim strData As String, strPart1 As String, strPart2 As String Select Case lState Case 1: 'Authentication, set Username wsMain.GetData strData If Left(strData, 3) = "+OK" Then bUser = True lState = 2 'Send password lStateSecond = 0 RaiseEvent Progress(3, "SENDING PASSWORD") wsMain.SendData "PASS " & sPWD & vbNewLine ElseIf Left(strData, 4) = "-ERR" Then strPart1 = Left(strData, 4) strPart2 = Mid(strData, 6) If lStateSecond = 1 Then wsMain.CloseSck RaiseEvent Error(1, "USER COMMAND NOT ACCEPTED ON SERVER") Exit Sub ElseIf LCase(Left(strPart2, 3)) = "com" Then 'Unknown command "USER", try "user" wsMain.SendData "user " & sUser & vbNewLine lStateSecond = 1 End If End If Case 2: 'Authentication, set Password wsMain.GetData strData If Left(strData, 3) = "+OK" Then bPass = True lState = 3 lStateSecond = 0 RaiseEvent Progress(4, "AUTHENTICATED") RaiseEvent Progress(5, "QUERYING FOR MAIL") wsMain.SendData "LIST" & vbNewLine 'ask for mail ElseIf Left(strData, 4) = "-ERR" Then strPart1 = Left(strData, 4) strPart2 = Mid(strData, 6) If LCase(Left(strPart2, 4)) = "unkn" Then 'Unknown user or password wsMain.CloseSck RaiseEvent Error(2, "UNKNOWN USERNAME OR PASSWORD") ElseIf LCase(Left(strPart2, 4)) = "-err" Then If lStateSecond = 1 Then wsMain.CloseSck RaiseEvent Error(3, "PASS COMMAND NOT ACCEPTED ON SERVER") Exit Sub End If lStateSecond = 1 wsMain.SendData "pass " & sPWD & vbNewLine End If End If Case 3: 'LIST MAIL wsMain.GetData strData If Left(strData, 3) = "+OK" Then Dim sBuffer As String sBuffer = Mid(strData, 5) sBuffer = Left(sBuffer, InStr(1, sBuffer, " ") - 1) lMailCount = Val(sBuffer) RaiseEvent Progress(6, "MAIL LIST RESEIVED") 'lMailCount = UBound(bData) - 1 If lMailCount > 0 Then lCurrentMail = 1 RaiseEvent Progress(7, "DOWNLOADING MAIL (" & lCurrentMail & "/" & lMailCount & ")") wsMain.SendData "TOP 1 10000" End If lStateSecond = 0 lState = 4 If lMailCount = 0 Then wsMain.CloseSck bUpdateMail = False RaiseEvent Progress(8, "FINNISH DOWNLOADING MAIL") Exit Sub End If ElseIf Left(strData, 4) = "-ERR" Then If lStateSecond = 1 Then wsMain.CloseSck RaiseEvent Error(4, "LIST COMMAND NOT ACCEPTED ON SERVER") Exit Sub End If 'try "top" lStateSecond = 1 wsMain.SendData "list" & vbNewLine End If Case 4: 'SAVE MAIL wsMain.GetData strData If Left(strData, 3) = "+OK" Then Debug.Print strData Dim cMail As New clsMail cMail.setData Mid(strData, 5) colMail.Add cMail, CStr(lCurrentMail) If lMailCount > lCurrentMail Then lCurrentMail = lCurrentMail + 1 RaiseEvent Progress(7, "DOWNLOADING MAIL (" & lCurrentMail & "/" & lMailCount & ")") wsMain.SendData "TOP " & lCurrentMail & " 10000" & vbNewLine Else RaiseEvent Progress(8, "FINNISH DOWNLOADING MAIL") End If Else 'No such message RaiseEvent Error(5, "NO SUCH MESSAGE") wsMain.CloseSck Exit Sub End If Case Else: RaiseEvent Error(7, "APPLICATION ERROR, CONATACT SYSTEM ADMIN!") End Select End Sub POP3_Client.zip Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå