Sample code for 30+ languages & platforms
PureBasic

Get the Decoded MIME Body Bytes (BinData)

See more MIME Examples

Demonstrates the Chilkat Mime.GetBodyBd method, which replaces the contents of a BinData with the decoded body bytes of the current part. The only argument is the BinData. Base64 and quoted-printable are decoded; headers and boundaries are not included.

Note: The file paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.

Background: This is how you extract a part's actual content as bytes — the decoded payload of an attachment or an image, ready to hash, re-save, or hand to another API. Because it works in raw bytes it is the correct choice for binary parts, where a text decode would be wrong. Note it replaces the BinData contents rather than appending.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkMime.pb"

Procedure ChilkatExample()

    success.i = 0

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

    success = CkMime::ckLoadMimeFile(mime,"qa_data/message.eml")
    If success = 0
        Debug CkMime::ckLastErrorText(mime)
        CkMime::ckDispose(mime)
        ProcedureReturn
    EndIf

    ;  Replace the contents of a BinData with the decoded body bytes of the current part.  Base64 and
    ;  quoted-printable are decoded; MIME headers and multipart boundaries are not included.
    bd.i = CkBinData::ckCreate()
    If bd.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkMime::ckGetBodyBd(mime,bd)
    If success = 0
        Debug CkMime::ckLastErrorText(mime)
        CkMime::ckDispose(mime)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    Debug "Decoded body: " + Str(CkBinData::ckNumBytes(bd)) + " bytes."


    CkMime::ckDispose(mime)
    CkBinData::ckDispose(bd)


    ProcedureReturn
EndProcedure