Sample code for 30+ languages & platforms
PureBasic

The MIME Content-Type Header Field

See more MIME Examples

Explains the ContentType property and the Content-Type header field including the various attributes that may be included.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkMime.pb"

Procedure ChilkatExample()

    success.i = 0

    ; Every part in a MIME messsage should include a Content-Type header field.
    ; The Content-Type indicates the type of content contained in the MIME part.
    ; For example: text/plain, image/jpeg, application/pdf, application/json, multipart/mixed, etc.

    ; Multipart content types are those where the MIME part's body is composed of N inner MIME messages,
    ; separated by a boundary string.
    ; This is how MIME gets a nested, tree-like structure.  The most common multipart MIME types
    ; are (for email related MIME) multipart/mixed, multipart/alternative, and multipart/related,
    ; and for HTTP related MIME, it is multipart/form-data.

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

    ; The Content-Type header field can be set or modified in two ways.
    ; 1) By setting the ContentType, Micalg, Name, Charset, Boundary, or Protocol properties.
    ;    Setting the ContentType property sets the primary value (such as "text/plain") of the header field.
    ;    Each of the other properties listed above will replace or add a particular attribute value.

    ; 2) By setting the entire contents of the ContentType header with the SetHeaderField method.
    ;    This updates each of the Content-Type related properties.

    ; For example:
    CkMime::setCkContentType(mime, "text/plain")
    CkMime::setCkCharset(mime, "utf-8")

    ; The Content-Type header field contains this:
    ;     Content-Type: text/plain; charset=utf-8
    Debug CkMime::ckGetEntireHead(mime)
    Debug "-"

    CkMime::ckSetHeaderField(mime,"Content-Type","image/jpeg; name=" + Chr(34) + "kitty.jpg" + Chr(34))
    ; The Content-Type header field now contains this:
    ;     Content-Type: image/jpeg; name="kitty.jpg"
    Debug CkMime::ckGetEntireHead(mime)
    Debug "-"

    ; Notice how the properties have been updated:
    Debug "ContentType property: " + CkMime::ckContentType(mime)
    Debug "Charset property: " + CkMime::ckCharset(mime)
    Debug "Name property: " + CkMime::ckName(mime)
    Debug "-"

    ; To change a particular attribute value, set the property.
    CkMime::setCkName(mime, "doggy.jpg")
    Debug CkMime::ckGetEntireHead(mime)
    Debug "-"

    ; To remove an attribute value from the Content-Type header,
    ; set the property to an empty string.
    CkMime::setCkName(mime, "")
    Debug CkMime::ckGetEntireHead(mime)
    Debug "-"


    CkMime::ckDispose(mime)


    ProcedureReturn
EndProcedure