ich habe, um die Funktion der POP3 Library zu verstehen ein kleines Programm geschrieben, welches sich auf einem POP3 Server einloggt und dann die Emails anzeigt. Mehr als anzeigen kann es noch nicht, evtl. wird es auch nicht mehr können, da ich momentan zu wenig Zeit habe da weiter dran zu schrauben. Ich möchte dennoch den Source hier aus zwei Gründen veröffentlichen:
1) Gibts sicherlich in meinem Code etwas zu verbessern
2) Hilft der Code vielleicht jemand anderem bei der Verwendung der POP3 Library
Ok, hier nun der Code
ChefPOP.pb
Code: Alles auswählen
Global inTransaction, *buffer, Connected
inTransaction = 0
Connected = 0
IncludeFile "Common.pb"
Open_Window_0()
Open_Window_1()
HideWindow(#Window_1,1)
POP3_Init()
Procedure FillEmailList();
POP3_Connect(GetGadgetText(#POP3Server), 110)
POP3_Logon(GetGadgetText(#Username), GetGadgetText(#Password))
Connected = 1
nMessages = POP3_GetMsgCount()
Debug nMessages
HideWindow(#Window_1,0)
SetGadgetState(#ProgressBar_0, 0)
For i = 0 To nMessages
POP3_ParseMsgHeader( i )
from$ = POP3_HeaderFrom()
date$ = POP3_HeaderDate()
subject$ = POP3_HeaderSubject()
size = POP3_GetMsgSize(i)
AddGadgetItem(#ListIcon_0, -1, Str(i)+Chr(10)+date$+Chr(10)+from$+Chr(10)+subject$+Chr(10)+Str(size))
If i = 0
RemoveGadgetItem(#ListIcon_0, 0)
EndIf
x.f = 100/nMessages*i
Debug x
SetGadgetState(#ProgressBar_0, x)
While WindowEvent(): Wend
Next
HideWindow(#Window_1,1)
EndProcedure
Procedure messageCallBack(msg, param1, param2)
Select msg
Case #POP3MSG_DOWNLOADCOMPLETE
Nachricht$ = PeekS(*buffer)
SetGadgetText(#Editor_0, Nachricht$)
FreeMemory(*buffer)
HideWindow(#Window_1,1)
inTransaction = 0
Case #POP3MSG_ERROR
Debug "Fehler"
Case #POP3MSG_DOWNLOADPROGRESS
HideWindow(#Window_1,0)
Debug "still downloading..."
SetGadgetState(#ProgressBar_0, param1)
EndSelect
EndProcedure
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
;Debug "WindowID: " + Str(EventWindowID())
GadgetID = EventGadgetID()
If GadgetID = #ListIcon_0
If Connected = 1
msgsize = POP3_GetMsgSize(GetGadgetState(#ListIcon_0)+1)
If msgsize = 0
msgsize = 1
EndIf
*buffer = AllocateMemory(msgsize)
If inTransaction = 0
If POP3_BufferMsgBody(GetGadgetState(#ListIcon_0)+1, *buffer, @messageCallBack() )
inTransaction = 1
EndIf
EndIf
EndIf
ElseIf GadgetID = #Editor_0
Debug "GadgetID: #Editor_0"
ElseIf GadgetID = #Button_0
Debug "GadgetID: #Button_0"
DisableGadget(#Button_0,1)
FillEmailList()
DisableGadget(#Button_0,0)
EndIf
EndIf
Until Event = #PB_EventCloseWindow
If Connected = 1
POP3_Logoff()
EndIf
End
Code: Alles auswählen
; PureBasic Visual Designer v3.90 build 1360
;- Window Constants
;
Enumeration
#Window_0
#Window_1
EndEnumeration
;- Gadget Constants
;
Enumeration
#POP3Server
#Username
#Password
#ListIcon_0
#Editor_0
#ProgressBar_0
#Button_0
#Frame3D_0
#Frame3D_3
#Frame3D_4
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 226, 58, 642, 650, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "ChefPOP")
If CreateGadgetList(WindowID())
;-
StringGadget(#Username, 200, 30, 150, 20, "")
StringGadget(#Password, 380, 30, 150, 20, "", #PB_String_Password)
StringGadget(#POP3Server, 20, 30, 150, 20, "", #PB_String_LowerCase)
ListIconGadget(#ListIcon_0, 10, 70, 620, 120, "No", 50, #PB_ListIcon_CheckBoxes|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(#ListIcon_0, 1, "Date/Time", 100)
AddGadgetColumn(#ListIcon_0, 2, "Sender", 100)
AddGadgetColumn(#ListIcon_0, 3, "Subject", 300)
AddGadgetColumn(#ListIcon_0, 4, "Size", 100)
EditorGadget(#Editor_0, 10, 220, 620, 390)
ProgressBarGadget(#ProgressBar_0, 0, 0, 230, 70, 0, 100, #PB_ProgressBar_Smooth)
ButtonGadget(#Button_0, 550, 10, 80, 50, "Connect")
Frame3DGadget(#Frame3D_0, 10, 10, 170, 50, "POP3 Server")
Frame3DGadget(#Frame3D_3, 190, 10, 170, 50, "Username")
Frame3DGadget(#Frame3D_4, 370, 10, 170, 50, "Password")
EndIf
EndIf
EndProcedure
Procedure Open_Window_1()
If OpenWindow(#Window_1, 376, 346, 226, 72, #PB_Window_BorderLess | #PB_Window_WindowCentered | #PB_Window_TitleBar, "Progress")
If CreateGadgetList(WindowID())
ProgressBarGadget(#ProgressBar_0, 0, 0, 230, 70, 0, 100, #PB_ProgressBar_Smooth)
EndIf
EndIf
EndProcedure
Grüsse
Michael