Gå til innhold

POP3 Client, feil i mottak av mail...


Anbefalte innlegg

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...