PureBasic
PureBasic
SOCKS4, SOCKS5 Proxy for POP3
Demonstrates how to communicate with a POP3 server through a SOCKS4 or SOCKS5 proxy.Chilkat PureBasic Downloads
IncludeFile "CkEmailBundle.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires 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 use a SOCKS4 or SOCKS5 proxy, simply set the following
; properties prior to making any calls that communicate with
; a POP3 server:
; The SOCKS hostname may be a domain name or
; IP address:
CkMailMan::setCkSocksHostname(mailman, "www.mysocksproxyserver.com")
CkMailMan::setCkSocksPort(mailman, 1080)
CkMailMan::setCkSocksUsername(mailman, "myProxyLogin")
CkMailMan::setCkSocksPassword(mailman, "myProxyPassword")
; Set the SOCKS version to 4 or 5 based on the version
; of the SOCKS proxy server:
CkMailMan::setCkSocksVersion(mailman, 5)
; Note: SOCKS4 servers only support usernames without passwords.
; SOCKS5 servers support full login/password authentication.
; 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.
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
CkMailMan::ckPop3EndSession(mailman)
CkMailMan::ckDispose(mailman)
CkEmailBundle::ckDispose(bundle)
CkEmail::ckDispose(email)
ProcedureReturn
EndProcedure