Sample code for 30+ languages & platforms
DataFlex

Read All Email from POP3 Inbox by Message Numbers

Demonstrates how to read all of the email from a POP3 inbox by fetching each email by it's message number.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    Integer iNumMessages
    Integer i
    Variant vEmail
    Handle hoEmail
    String sTemp1
    String sTemp2

    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

    // Set the POP3 server's hostname
    Set ComMailHost Of hoMailman To "pop.example.com"

    // Set the POP3 login/password.
    Set ComPopUsername Of hoMailman To "myLogin"
    Set ComPopPassword Of hoMailman To "myPassword"

    // Get the number of messages in the mailbox.
    Get ComGetMailboxCount Of hoMailman To iNumMessages

    // Message numbers are specific to a POP3 session. 
    // If a maildrop (i.e. inbox)  contains 10 messages, 
    // the message numbers will be 1, 2, 3, ... 10. 
    // If message number 1 is deleted and a new POP3 session 
    // is established, there will be 9 messages numbered 1, 2, 3, ... 9. 

    Move 1 To i

    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End
    While (i <= iNumMessages)
        // Fetch by the message number (not by the UIDL)
        Get pvComObject of hoEmail to vEmail
        Get ComFetchOne Of hoMailman False 0 i vEmail To iSuccess
        If (iSuccess = False) Begin
            Get ComLastErrorText Of hoMailman To sTemp1
            Showln sTemp1
            Procedure_Return
        End

        Get ComFrom Of hoEmail To sTemp1
        Get ComSubject Of hoEmail To sTemp2
        Showln sTemp1 ": " sTemp2 (character(10))

        Move (i + 1) To i
    Loop



End_Procedure