hier ein Code von mir (den ich in einem neuen Tool brauchte) der die vorhandenen Mails auf dem Server checkt und deren Größe, Absender sowie Betreff ausgibt, ohne die komplettem Mails herunterladen zu müßen.
Vielleicht kann es jemand brauchen.

Neue 7. Version:
Code: Alles auswählen
;POP3_MailCheck (PB 4.41)
;von DrFalo, X360 Andy, STARGÅTE, ...
EnableExplicit
Structure Header
Size.s
From.s
Subject.s
Date.s
EndStructure
Global Dim Mail.Header(1)
Define Message.i
InitNetwork()
Procedure.s POP3_ReceiveNetworkData(ConnectID.i, Separator.s)
Protected BufferLength.i = 1024
Protected Buffer.s = Space(BufferLength)
Protected Length.i, Result.s
Protected Timeout.i = ElapsedMilliseconds() + 15000 ;15 Sekunden
Repeat
Select NetworkClientEvent(ConnectID)
Case #PB_NetworkEvent_Data
Repeat
Length = ReceiveNetworkData(ConnectID, @Buffer, BufferLength)
If Length = - 1
ProcedureReturn ""
EndIf
Result + Left(Buffer, Length)
Until Right(Result, Len(Separator)) = Separator
Break
Default
Delay(1)
If ElapsedMilliseconds() > Timeout
ProcedureReturn ""
EndIf
EndSelect
ForEver
Debug Result
ProcedureReturn ReplaceString(Result, #CRLF$, #LF$)
EndProcedure
Procedure POP3_MailCheck(Server.s, Port.i, User.s, Pass.s)
Protected Message.i, MessagePart.i, Messages.i
Protected ReceiveString.s, ReceiveStringPart.s
Protected ConnectID.i = OpenNetworkConnection(Server, Port)
If Not ConnectID
ProcedureReturn
EndIf
If Left(POP3_ReceiveNetworkData(ConnectID, #CRLF$), 3) = "+OK"
SendNetworkString(ConnectID, "USER " + User + #CRLF$)
If Left(POP3_ReceiveNetworkData(ConnectID, #CRLF$), 3) = "+OK"
SendNetworkString(ConnectID, "PASS " + Pass + #CRLF$)
If Left(POP3_ReceiveNetworkData(ConnectID, #CRLF$), 3) = "+OK"
SendNetworkString(ConnectID, "LIST" + #CRLF$)
ReceiveString = POP3_ReceiveNetworkData(ConnectID, #CRLF$ + "." + #CRLF$)
If Left(ReceiveString, 3) = "+OK"
Messages = CountString(ReceiveString, #LF$) - 2
ReDim Mail(Messages)
For Message = 1 To Messages
Mail(Message)\Size = "Size: " + StringField(StringField(ReceiveString, Message + 1, #LF$), 2, " ") + " Byte"
Next Message
For Message = 1 To Messages
SendNetworkString(ConnectID, "TOP " + Str(Message) + " 0" + #CRLF$)
ReceiveString = POP3_ReceiveNetworkData(ConnectID, #CRLF$ + "." + #CRLF$)
If Left(ReceiveString, 3) = "+OK"
For MessagePart = 1 To CountString(ReceiveString, #LF$) - 2
ReceiveStringPart = StringField(ReceiveString, MessagePart + 1, #LF$)
If FindString(LCase(ReceiveStringPart), "from:", 1)
Mail(Message)\From = Trim(ReceiveStringPart)
ElseIf FindString(LCase(ReceiveStringPart), "subject:", 1)
Mail(Message)\Subject = Trim(ReceiveStringPart)
ElseIf FindString(LCase(ReceiveStringPart), "date:", 1)
Mail(Message)\Date = StringField(Trim(ReceiveStringPart), 1, "+")
EndIf
Next MessagePart
EndIf
Next Message
EndIf
EndIf
EndIf
CloseNetworkConnection(ConnectID)
EndIf
EndProcedure
POP3_MailCheck("server", 110, "user", "pass")
For Message = 1 To ArraySize(Mail())
Debug ""
Debug "Message: " + Str(Message)
Debug Mail(Message)\Size
Debug Mail(Message)\From
Debug Mail(Message)\Subject
Debug Mail(Message)\Date
Next Message