I have this email check program, but occasionally (most of the time when having > 15 messages) I get a memory access error.
Code: Select all
Enumeration
#Window_0
#Listview_0
EndEnumeration
Global Server.s, Port.l, User.s, Pwd.s, Messages.l, Message.l, MessageCounter.l, TmpString.s, Inhoud.s, Afzender.s, Onderwerp.s, Ontvangen.s
Global nEmailnr.l, aantalgewist.l, StartOutlook.l, Spam.l
Server.s = "pop.hccnet.nl"
Port.l = 110
User.s = "myName"
Pwd.s = "MyPwd"
Declare Open_Window_0()
Procedure GetThem()
If Messages
;Debug "Message(s) total size : " + Str(PurePOP3_GetMessagesTotalSize()) + " bytes"
For MessageCounter = 1 To Messages
;Debug "Email " + Str(MessageCounter) + " size : " + Str(PurePOP3_GetMessageSize(MessageCounter)) + " bytes"
If PurePOP3_RetrieveMessage(MessageCounter) > 0
;Debug "--------------------------"
;Debug "Email info : " + PurePOP3_GetMessageInfo()
;Debug "Email " + Str(MessageCounter)
;MailInfo.s = ""
; het splitsen van de email:
For k=1 To 3 ; 5 geeft ook aantal attachments en de lengte van de email
TmpString.s = StringField(PurePOP3_GetMessageInfo(), k, Chr(9))
Select k
Case 1 ; delivery date
Ontvangen.s = Mid(TmpString.s,15,Len(TmpString)-14)
Case 2 ; subject
Onderwerp.s = Mid(TmpString.s,9,Len(TmpString)-8)
Case 3 ; from
Afzender.s = Mid(TmpString.s,6,Len(TmpString)-5)
EndSelect
Next
;Debug "EMAIL " + Str(MessageCounter) + " " + MailInfo.s
If PurePOP3_IsMessageHTML()
*Message = PurePOP3_GetMessageTextInMemory(1)
Else
*Message = PurePOP3_GetMessageTextInMemory()
EndIf
If *Message
Inhoud.s = PeekS(*Message)
Inhoud.s = LCase(Inhoud.s)
;Debug "*INHOUD*:" + Inhoud.s
EndIf
AddGadgetItem (#Listview_0, -1, "Email "+Str(MessageCounter)+" Van: " + Afzender.s +" Onderwerp: " + Onderwerp.s+" Ontvangen: " + Ontvangen.s)
If FindString(Afzender,"0451.com",1) Or FindString(Inhoud, "watches", 1) Or FindString(Inhoud, "replica", 1) Or FindString(Inhoud, "poor health", 1) Or FindString(Inhoud, "medication", 1) Or FindString(Inhoud, "stamina", 1) Or FindString(Inhoud, "erecti", 1) Or FindString(Inhoud, "orgasm", 1) Or FindString(Inhoud, "corkpencills", 1) Or FindString(Inhoud, "dating", 1)
SetGadgetItemState(#Listview_0, MessageCounter-1, #PB_ListIcon_Checked)
EndIf
EndIf
Next ; MessageCounter
FreeMemory(*Message)
EndIf
EndProcedure
Procedure Pop3Stuff()
If PurePOP3_OpenPOP3Connection(Server, Port, User, Pwd) = #PurePOP3_Ok
Messages = PurePOP3_CountMessages()
If Messages = 0
PurePOP3_ClosePOP3Connection()
PlaySound_("d:\checkmail\lonely.wav",0,0)
Else
PlaySound_("c:\windows\media\notify.wav",0,0)
Open_Window_0()
SetGadgetState(9, 1) ; outlook opstarten aangevinkt
EndIf
Else
MessageRequester("PROBLEEM MET DE SERVER","SERVER ONBEREIKBAAR FOUTCODE "+ PurePOP3_GetLastServerMessage())
EndIf
EndProcedure
Procedure DoIt()
nEmailNr.l = 0
aantalgewist = 0
For I = 0 To CountGadgetItems(#Listview_0) - 1
nEmailNr.l = nEmailNr.l + 1
If GetGadgetItemState(#Listview_0, I) = #PB_ListIcon_Checked
If PurePOP3_DeleteMessage(nEmailNr)
aantalgewist = aantalgewist + 1
Else
MessageRequester("PROBLEEM","DEZE EMAIL NIET KUNNEN VERWIJDEREN" + Chr(10) + "FOUTMELDING: " + PurePOP3_GetLastServerMessage() + Chr(10) + "EMAIL "+Str(nEmailNr.l)+" NIET GEWIST: " ,#MB_ICONWARNING)
EndIf
EndIf
Next
If nEmailNr - aantalgewist > 0
SetGadgetState(9, 1)
Else
SetGadgetState(9, 0)
EndIf
If aantalgewist > 0
AddGadgetItem (#Listview_0, -1, Str(aantalgewist)+" email(s) werd(en) verwijderd...")
;MessageRequester("Aantal verwijderde emails",Str(aantalgewist)+" email(s) werd(en) verwijderd...",#PB_MessageRequester_Ok)
EndIf
EndProcedure
Procedure Open_Window_0()
; If OpenWindow(#Window_0, 0, 0, 950,520, "CheckMail voor Eus", #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
If OpenWindow(#Window_0, 0, 0, 950,520, "CheckMail 150806", #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
AddKeyboardShortcut(0, #PB_Shortcut_Escape, 99)
If CreateGadgetList(WindowID(#Window_0))
ListViewGadget(#Listview_0, 20, 20, 900, 370)
ListIconGadget(#Listview_0, 25, 25, 890,360, "Wis Informatie", 890, #PB_ListIcon_CheckBoxes | #PB_ListIcon_FullRowSelect | #PB_ListIcon_MultiSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_GridLines)
;ListIconGadget(#Listview_0, 25, 25, 470, 490, "Wis Informatie", 490)
;AddGadgetColumn(#Listview_0, 50, "Informatie", 490)
;ListIconGadget(#Listview_0, 50, 25, 425, 490, "Informatie", 490)
;TextGadget(4, 20, 10, 180, 24, "Select a DBF-file:")
;TextGadget(5, 240, 60, 180, 24, "Selected:")
;TextGadget(6, 240, 90, 180, 24, "")
ButtonGadget(7, 440, 400, 80, 30, "Verwijder", #PB_Button_Default )
ButtonGadget(8, 440, 440, 80, 30, "Einde" , #PB_Button_Default )
CheckBoxGadget(9, 440, 470, 200, 30, "OUTLOOK OPSTARTEN")
EndIf
If CreateStatusBar(0, WindowID(#Window_0))
StatusBarText(0, 0, "Esc - Einde", 0)
EndIf
SetGadgetState(9, 1)
GetThem() ; Haal emails op...
Repeat
WEvent = WaitWindowEvent()
Select WEvent
Case #PB_Event_CloseWindow
Quit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case 7 ; button VERWIJDEREN
DoIt()
Case 8 ; button exit
Quit = #True
Case 9 ;
EndSelect
Case #PB_Event_Menu
EventMenu = EventMenu()
Select EventMenu
Case 99
Quit = #True
Default
EndSelect
Default
EndSelect
Until WEvent = #PB_Event_CloseWindow Or Quit
EndIf
PurePOP3_ClosePOP3Connection() ; close the connection...
StartOutlook.l = GetGadgetState(9)
If StartOutlook
Result = RunProgram("C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE" )
EndIf
EndProcedure
FontResult1 = LoadFont(#PB_Any,"Arial",14)
SetGadgetFont(#PB_Default,FontResult1)
Pop3Stuff() ; kijk of er emails zijn...
End