PureBasic
PureBasic
POP3 using HTTP Proxy
Demonstrates how to communicate with a POP3 server through an HTTP proxy.Chilkat PureBasic Downloads
IncludeFile "CkEmailBundle.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; The mailman object is used for receiving (POP3)
; and sending (SMTP) email.
mailman.i = CkMailMan::ckCreate()
If mailman.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; To connect through an HTTP proxy, set the HttpProxyHostname
; and HttpProxyPort properties to the hostname (or IP address)
; and port of the HTTP proxy. Typical port numbers used by
; HTTP proxy servers are 3128 and 8080.
CkMailMan::setCkHttpProxyHostname(mailman, "www.my-http-proxy.com")
CkMailMan::setCkHttpProxyPort(mailman, 3128)
; Important: Your HTTP proxy server must allow non-HTTP
; traffic to pass. Otherwise this does not work.
; Set the POP3 server's hostname
CkMailMan::setCkMailHost(mailman, "pop.example.com")
; Set the POP3 login/password.
CkMailMan::setCkPopUsername(mailman, "myLogin")
CkMailMan::setCkPopPassword(mailman, "myPassword")
; Copy the all email from the user's POP3 mailbox
; into a bundle object. The email remains on the server.
;
; NOTE: All methods that communicate with a POP3 server
; will automatically connect and authenticate (i.e. login)
; if not already connected. The connection will remain
; open after the method call returns so that subsequent
; calls do not need to re-establish the connection.
; In this case, the connection is established via the HTTP
; proxy.
bundle.i = CkEmailBundle::ckCreate()
If bundle.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
keepOnServer.i = 1
headersOnly.i = 0
; Irrelevent because we are not downloading headers-only
numBodyLines.i = 0
success = CkMailMan::ckFetchAll(mailman,keepOnServer,headersOnly,numBodyLines,bundle)
If success = 0
Debug CkMailMan::ckLastErrorText(mailman)
CkMailMan::ckDispose(mailman)
CkEmailBundle::ckDispose(bundle)
ProcedureReturn
EndIf
email.i = CkEmail::ckCreate()
If email.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
i.i = 0
While i < CkEmailBundle::ckMessageCount(bundle)
CkEmailBundle::ckEmailAt(bundle,i,email)
Debug "From: " + CkEmail::ckFrom(email)
Debug "Subject: " + CkEmail::ckSubject(email)
i = i + 1
Wend
success = CkMailMan::ckPop3EndSession(mailman)
CkMailMan::ckDispose(mailman)
CkEmailBundle::ckDispose(bundle)
CkEmail::ckDispose(email)
ProcedureReturn
EndProcedure