Sample code for 30+ languages & platforms
DataFlex

Fetch Oldest/Newest IMAP Email

Emails may be downloaded by sequence number. Assuming the selected mailbox is not empty, the oldest email is at sequence number 1, and the newest email is at sequence number N. The FetchSingle method may be used to download by sequence number.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoImap
    Integer n
    Boolean iIsUid
    Variant vOldestEmail
    Handle hoOldestEmail
    Variant vNewestEmail
    Handle hoNewestEmail
    String sTemp1

    Move False To iSuccess

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatImap)) To hoImap
    If (Not(IsComObjectCreated(hoImap))) Begin
        Send CreateComObject of hoImap
    End

    // Connect to an IMAP server.
    // Use TLS
    Set ComSsl Of hoImap To True
    Set ComPort Of hoImap To 993
    Get ComConnect Of hoImap "mail.testemail.net" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoImap To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Login
    Get ComLogin Of hoImap "***" "***" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoImap To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Select an IMAP mailbox
    Get ComSelectMailbox Of hoImap "Inbox" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoImap To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // After selecting a mailbox, the NumMessages property
    // contains the number of emails in the selected mailbox.

    Get ComNumMessages Of hoImap To n

    If (n > 0) Begin

        // The oldest email is always at sequence number 1.
        Move False To iIsUid

        Get Create (RefClass(cComChilkatEmail)) To hoOldestEmail
        If (Not(IsComObjectCreated(hoOldestEmail))) Begin
            Send CreateComObject of hoOldestEmail
        End
        Get pvComObject of hoOldestEmail to vOldestEmail
        Get ComFetchEmail Of hoImap False 1 iIsUid vOldestEmail To iSuccess
        If (iSuccess = False) Begin
            Get ComLastErrorText Of hoImap To sTemp1
            Showln sTemp1
            Procedure_Return
        End

        // Display the From and Subject
        Get ComFromAddress Of hoOldestEmail To sTemp1
        Showln sTemp1
        Get ComSubject Of hoOldestEmail To sTemp1
        Showln sTemp1

        Showln "--"

        // The newest email is at sequence number N:
        Get Create (RefClass(cComChilkatEmail)) To hoNewestEmail
        If (Not(IsComObjectCreated(hoNewestEmail))) Begin
            Send CreateComObject of hoNewestEmail
        End
        Get pvComObject of hoNewestEmail to vNewestEmail
        Get ComFetchEmail Of hoImap False n iIsUid vNewestEmail To iSuccess
        If (iSuccess = False) Begin
            Get ComLastErrorText Of hoImap To sTemp1
            Showln sTemp1
            Procedure_Return
        End

        // Display the From and Subject
        Get ComFromAddress Of hoNewestEmail To sTemp1
        Showln sTemp1
        Get ComSubject Of hoNewestEmail To sTemp1
        Showln sTemp1

    End

    // Disconnect from the IMAP server.
    Get ComDisconnect Of hoImap To iSuccess


End_Procedure