Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PowerBuilder) Process Large POP3 MailboxDemonstrates how to read email from a mailbox that may contain a large number of emails.
integer li_rc oleobject loo_Mailman oleobject loo_Sa integer i integer li_NumEmails integer li_ChunkSize integer li_ChunkBeginIdx integer li_ChunkEndIdx oleobject loo_SaChunk string ls_ChunkStr oleobject loo_Bundle // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. loo_Mailman = create oleobject // Use "Chilkat_9_5_0.MailMan" for versions of Chilkat < 10.0.0 li_rc = loo_Mailman.ConnectToNewObject("Chilkat.MailMan") if li_rc < 0 then destroy loo_Mailman MessageBox("Error","Connecting to COM object failed") return end if loo_Mailman.MailHost = "pop.example.com" loo_Mailman.PopUsername = "myLogin" loo_Mailman.PopPassword = "myPassword" loo_Mailman.MailPort = 995 loo_Mailman.PopSsl = 1 // Get the list of UIDLs for all emails in the mailbox. loo_Sa = loo_Mailman.GetUidls() if loo_Mailman.LastMethodSuccess = 0 then Write-Debug loo_Mailman.LastErrorText destroy loo_Mailman return end if li_NumEmails = loo_Sa.Count if li_NumEmails = 0 then Write-Debug "Mailbox is empty" destroy loo_Mailman return end if li_ChunkSize = 6 // Download the emails in chunks of 6 emails each. li_ChunkBeginIdx = 0 li_ChunkEndIdx = li_ChunkSize - 1 if li_ChunkEndIdx >= li_NumEmails then li_ChunkEndIdx = li_NumEmails - 1 end if loo_SaChunk = create oleobject // Use "Chilkat_9_5_0.StringArray" for versions of Chilkat < 10.0.0 li_rc = loo_SaChunk.ConnectToNewObject("Chilkat.StringArray") do while (li_ChunkBeginIdx < li_NumEmails) Write-Debug string(li_ChunkBeginIdx) + " to " + string(li_ChunkEndIdx) // Build a chunk of UIDLs. loo_SaChunk.Clear() for i = li_ChunkBeginIdx to li_ChunkEndIdx loo_SaChunk.Append(loo_Sa.GetString(i)) next // Log the UIDLs in this chunk... ls_ChunkStr = loo_SaChunk.SaveToText() Write-Debug ls_ChunkStr // Download this chunk of email from the POP3 server. loo_Bundle = loo_Mailman.FetchMultiple(loo_SaChunk) if loo_Mailman.LastMethodSuccess = 0 then Write-Debug loo_Mailman.LastErrorText destroy loo_Mailman destroy loo_SaChunk return end if Write-Debug "Downloaded " + string(loo_Bundle.MessageCount) + " emails." Write-Debug "----" // Process the bundle... // (your application's processing code goes here...) destroy loo_Bundle // Get the next chunk... li_ChunkBeginIdx = li_ChunkBeginIdx + li_ChunkSize li_ChunkEndIdx = li_ChunkEndIdx + li_ChunkSize if li_ChunkEndIdx >= li_NumEmails then li_ChunkEndIdx = li_NumEmails - 1 end if loop destroy loo_Sa destroy loo_Mailman destroy loo_SaChunk |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.