I see 2 tools that should accomplish this.
something from Chilkat and the Rick Strahl client tools. There is some code in Rick strahls library that looks like this:
loPop = CREATEOBJECT("wwPop3")
loPop.cMailServer = lcMailServer
loPop.cUserName = lcUserName
loPop.cPassword = lcPassword
lopop.lLogSession = .F.
*** Connect to the server with username password and retrieve message count
IF !loPOP.Connect()
loProcess.Errormsg("Couldn't connect to mail server",loPop.cErrormsg)
RETURN
ENDIF
IF EMPTY(lcId)
*** Display a message list
IF loPop.nMessageCount > 0
CREATE CURSOR TMessages (Date C(20),From C(80),Subject M,Size C(15),Action M)
FOR m.x =1 TO loPop.nMessageCount
loMsg = loPop.GetMessageHeader(m.x)
INSERT INTO TMessages(Date,From,Subject,Size,Action) VALUES ;
(TIMETOC(loMsg.dDate),loMsg.cFromName, loMsg.cSubject , TRANS(loMsg.nSize/1000,"999,999,999kb"),;
[<a href="WebMail.wwd?MsgID=] + UrlEncode(loMsg.cMsgId) + [">View</a> | ] + ;
[<a href="WebMail.wwd?MsgID=] + UrlEncode(loMsg.cMsgId) + [&Action=Delete">Delete</a>] )
ENDFOR
INDEX ON Date DESCENDING TAG Date
loSC = CREATEOBJECT("wwShowCursor")
loSC.lAlternateRows = .T.
loSc.nPage_ItemsPerPage = 20
loSc.cExtraTableTags = [style="font:8pt Verdana"]
loSC.ShowCursor()
lcOutput = loSC.Getoutput()
ELSE
lcOutput = "<p><center><h3>No Messages in your mailbox</h3></center><p>"
ENDIF