Sample code for 30+ languages & platforms
PureBasic

Download POP3 Email to MIME

Download the email from a POP3 mailbox directly into MIME, without parsing into email objects.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkStringTable.pb"
IncludeFile "CkBinData.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

    ; 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")

    ; First, get the complete set of UIDLs for the email in the POP3 mailbox:
    stUidls.i = CkStringTable::ckCreate()
    If stUidls.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkMailMan::ckFetchUidls(mailman,stUidls)
    If success = 0
        Debug CkMailMan::ckLastErrorText(mailman)
        CkMailMan::ckDispose(mailman)
        CkStringTable::ckDispose(stUidls)
        ProcedureReturn
    EndIf

    ; Download each email as MIME.
    ; If desired, the MIME can be loaded into an email object.
    bdMime.i = CkBinData::ckCreate()
    If bdMime.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    email.i = CkEmail::ckCreate()
    If email.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    count.i = CkStringTable::ckCount(stUidls)
    i.i = 0
    While i < count
        success = CkMailMan::ckFetchMimeBd(mailman,CkStringTable::ckStringAt(stUidls,i),bdMime)
        If success = 0
            Debug CkMailMan::ckLastErrorText(mailman)
            CkMailMan::ckDispose(mailman)
            CkStringTable::ckDispose(stUidls)
            CkBinData::ckDispose(bdMime)
            CkEmail::ckDispose(email)
            ProcedureReturn
        EndIf

        CkEmail::ckSetFromMimeBd(email,bdMime)
        Debug "From: " + CkEmail::ckFrom(email)
        Debug "Subject: " + CkEmail::ckSubject(email)

        i = i + 1
    Wend


    CkMailMan::ckDispose(mailman)
    CkStringTable::ckDispose(stUidls)
    CkBinData::ckDispose(bdMime)
    CkEmail::ckDispose(email)


    ProcedureReturn
EndProcedure