Sample code for 30+ languages & platforms
PureBasic

Parsing a Multipart/Digest Email

See more Email Object Examples

This example demonstrates how to parse a multipart/digest email. An email parsed by this sample could have a MIME structure as follows:
multipart/mixed
    text/plain
    text/plain
    multipart/digest
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
        message/rfc822
    text/plain

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkEmail.pb"

Procedure ChilkatExample()

    success.i = 0

    emlPath.s = "qa_data/eml/multipart_digest.eml"

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

    ; For this example, we'll load the email from a .eml.
    ; The email could alternatively be loaded as a result of downloading from an IMAP or POP3 server..

    success = CkEmail::ckLoadEml(email,emlPath)
    If success = 0
        Debug CkEmail::ckLastErrorText(email)
        CkEmail::ckDispose(email)
        ProcedureReturn
    EndIf

    numDigests.i = CkEmail::ckNumDigests(email)
    Debug "num digests = " + Str(numDigests)

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

    i.i = 0
    While i < numDigests
        CkEmail::ckGetDigestEmail(email,i,eDigest)
        Debug Str(i) + ":" + CkEmail::ckFromAddress(eDigest) + ", " + CkEmail::ckSubject(eDigest)
        m.s = CkEmail::ckGetHeaderField(eDigest,"Message")
        If CkEmail::ckLastMethodSuccess(eDigest) = 1
            Debug "    Message = " + m
        EndIf

        i = i + 1
    Wend


    CkEmail::ckDispose(email)
    CkEmail::ckDispose(eDigest)


    ProcedureReturn
EndProcedure