DataFlex
DataFlex
POP3 FetchAll Example
See more POP3 Examples
Demonstrates downloading email from a POP3 server via FetchAll (using pop3.live.com). Make sure to enable POP3 access for your HotMail account (or any other type of account if POP3 access is not enabled by default).Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoMailman
Variant vBundle
Handle hoBundle
Boolean iKeepOnServer
Boolean iHeadersOnly
Integer iNumBodyLines
Integer iNumEmails
Integer i
Variant vEmail
Handle hoEmail
String sTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatMailMan)) To hoMailman
If (Not(IsComObjectCreated(hoMailman))) Begin
Send CreateComObject of hoMailman
End
// Connection settings for pop3.live.com (or pop-mail.outlook.com, both should work)
Set ComMailHost Of hoMailman To "pop3.live.com"
Set ComPopUsername Of hoMailman To "my_account@live.com"
Set ComPopPassword Of hoMailman To "my_live.com_password"
Set ComMailPort Of hoMailman To 995
Set ComPopSsl Of hoMailman To True
// WARNING: FetchAll is only a reasonable choice if it is already know that not
// to many emails are present on the server. FetchAll is a poor choice if a huge number
// of emails exist. It is better to download individually or in batches.
Get Create (RefClass(cComChilkatEmailBundle)) To hoBundle
If (Not(IsComObjectCreated(hoBundle))) Begin
Send CreateComObject of hoBundle
End
Move True To iKeepOnServer
Move False To iHeadersOnly
// Irrelevent because we are not downloading headers-only
Move 0 To iNumBodyLines
Get pvComObject of hoBundle to vBundle
Get ComFetchAll Of hoMailman iKeepOnServer iHeadersOnly iNumBodyLines vBundle To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoMailman To sTemp1
Showln sTemp1
Procedure_Return
End
// Iterate over the bundle and examine each email..
Get ComMessageCount Of hoBundle To iNumEmails
Move 0 To i
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
While (i < iNumEmails)
Get pvComObject of hoEmail to vEmail
Get ComEmailAt Of hoBundle i vEmail To iSuccess
Get ComFrom Of hoEmail To sTemp1
Showln "From: " sTemp1
Get ComSubject Of hoEmail To sTemp1
Showln "Subject: " sTemp1
Showln "--"
Move (i + 1) To i
Loop
// Examine the POP3 session log:
Get ComPop3SessionLog Of hoMailman To sTemp1
Showln sTemp1
// End the POP3 session and close the connection to the POP3 server.
Get ComPop3EndSession Of hoMailman To iSuccess
Showln "-- Finished."
// The output of this program:
// **** Connected to pop3.live.com:995
// < +OK DUB006-POP62 POP3 server ready
// > USER chilkat@live.com
// < +OK password required
// > PASS ****
// < +OK User successfully authenticated. [AuthResult=0 Proxy=CY1PR17MB0630.namprd17.prod.outlook.com:1995:SSL]
// > STAT
// < +OK 23 914026
// > LIST
// < +OK 23 914026
// 1 50828
// 2 49862
// 3 142837
// 4 61466
// 5 40805
// 6 39992
// 7 61358
// 8 18431
// 9 122577
// 10 20322
// 11 24274
// 12 24367
// 13 22860
// 14 10136
// 15 35379
// 16 30916
// 17 19800
// 18 14941
// 19 16883
// 20 15151
// 21 20198
// 22 28108
// 23 42535
// .
// > UIDL
// < +OK
// < +OK
// 1 2291
// 2 2591
// 3 3062
// 4 3063
// 5 3064
// 6 3065
// 7 3066
// 8 3067
// 9 3068
// 10 3069
// 11 3070
// 12 3071
// 13 3072
// 14 3073
// 15 3074
// 16 3075
// 17 3076
// 18 3077
// 19 3078
// 20 3079
// 21 3080
// 22 3081
// 23 3405
// .
// > RETR 1
// < +OK
// > RETR 2
// < +OK
// > RETR 3
// < +OK
// > RETR 4
// < +OK
// > RETR 5
// < +OK
// > RETR 6
// < +OK
// > RETR 7
// < +OK
// > RETR 8
// < +OK
// > RETR 9
// < +OK
// > RETR 10
// < +OK
// > RETR 11
// < +OK
// > RETR 12
// < +OK
// > RETR 13
// < +OK
// > RETR 14
// < +OK
// > RETR 15
// < +OK
// > RETR 16
// < +OK
// > RETR 17
// < +OK
// > RETR 18
// < +OK
// > RETR 19
// < +OK
// > RETR 20
// < +OK
// > RETR 21
// < +OK
// > RETR 22
// < +OK
// > RETR 23
// < +OK
//
// -- Finished.
//
End_Procedure