MFC Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

MFC Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
Diffie-Hellman
DKIM / DomainKey
DSA
Email Object
Encryption
FileAccess
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip
Amazon S3


 

 

 

 

 

 

 

 

Parse MIME Header Fields

Demonstrates how to parse MIME header fields, including Content-Type, Content-Disposition, and Content-Transfer-Encoding.

This example uses a MIME test file located at http://www.chilkatsoft.com/testData/sampleMime2.txt. It contains the following MIME:

Content-Type: multipart/mixed;
 boundary="------------080707010302060306060800"

This is a multi-part message in MIME format.

--------------080707010302060306060800
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

This is the plain-text body.
--------------080707010302060306060800
Content-Disposition: attachment; filename="starfish.gif"
Content-Transfer-Encoding: base64
Content-Type: image/gif; name="starfish.gif"

R0lGODlhIAAgAPcAAP///+/v7/f39+/n5/fv7//39/fn597OzufW1tbGxs69vffe3u/W1salpZQQ
EIQYEJwQCJQYCJwYCM6clL2Ee5wpGIwhEK0YANatpdalnHMYCKUhCJQYAKUYAM6Ec5QhCJwhCPfW
zu/Oxta1rb17a6UhAK0hAPe9rb2Ec7V7a71rUpwpCL0xCJwhAOfOxta9tcatpdallM6cjMaUhK1C
IZwxELU5EK0xCLUxCN61pcacjK1rUrVaOaVKKZxCIZwxCKUxCL05CLUxAM6llO+1nMZzUr1rSrVS
KaVCGK1CGLVCEJQxCK05CLU5CIwpAKUxAK0xAM69tffWxrVrSrVaMbVKGMZKEL1CCLU5AP/v597O
xufGtcallNaljLWEa96ce9aUc717Wq1aMcZjMbVaKbVSIa1KGL1SGJw5CK1CCLVCCMZKCM5KCMZC
APfn3tbGvc57Ss5aGMZSENZaEL1KCM5SCLVCAMZKAPfezvfOte/GrdatlN6cc9aEUr1rOc5jIdZj
GL1SEM5aELVKCMZSCNZaCL1KAOfOvc57Qs5jGNZjEM5aCMZSAN5aAO/OtefGrcZjGM5jEN5rELVS
CMZaCN5jCOdrCM5aAO/Gpc5rGMZjENZrEN5jAOdrAOfe1t6MQtZ7Kd57IdZzGM5rEMZjCNZrCM5j
ANbOxu/Wve+9jPe9hO+1e+etc85zGO+EGMZrENZzEM5rCN5zCO97COdzAO/n3u+1c+ecSt6UQs57
Ie+MIdZ7GOeEGM5zEO+EELVjCOd7CO+ECOd7AO/Ope+tWuelUu+UKeeMGOeEEO+MEOeECO+EAO/G
jO+cKfeUEO+MCO+tSuecMeeUGN6MEOeMCO+UCO+tQuelOe+lMe+lKe+cGOeUEO+cEOeUCN6MAO+U
AOe9c/e1Oe+lId6UEO+cCPe9Qve1Me+lEOecCO+lCOe1Su+1OeelGO+tGPetCPetAO+9Qve1GO+1
EPe9CPe9APf37+fv5/f//+/v9/fv9+fe5+/e5869xufW3t7GzgAAACwAAAAAIAAgAAAI/wABCBxI
sKDBgwgTFgCwMKHDhwyHYWoIsWIBZsdyHaoIcaGbaNQ0ZeBYEROvV0pmCCDp8B4rZaOUcGHpcIEx
aqPMYLjHMcsCAwgxkRv3q8wLnhAdfWpmDRwqAgQFEEvHLlCZNxwfpVmkDJ04dczc3LsXQtq4XWh8
aGH48F49FDUC9UInT941W6luCUOWyQmSLST3eUnChNS4c9SooQuGDNkrIIrA1MqXr0A+AyFC4Kln
kMAQKljotJJGDZklS9PkyEHGLZu1ctbCmWvXThurfAbvHSii5kegxpYqtRpEKFnid/TSneu2LRYh
P/0Q1tJRgYOZV71UL5LEK1KiV68yVf+xgaOKmAZICd5bmA8FEyZQlMjRRAhQGQv4QQSJL8ZLFHwP
6aFIJXNIEkggcgQhwYIlKEFFGDKcEgBCBVCkByC0IAMJGnSAYsUNEmzAgw4HBJBeQisZcAswjqGh
wQeBKGIFFD0ocCJE9diyjTKRLPHBAx/cEAcdgxgx4Vg3HnSPKs4E00sNEYDwgQksQDLJIohMSJIj
ugSTCRA/ILFDCjTckUkrpYiCAEluYCMLJCsoMQUM9gjQRSSL7CLJJjmQxMw3kQChxA78IFULHIK0
MgonXyR5UAHWVBKIEmEcUJAIYxgSSSF94AZRPrgsQgUF0RmUgWpy/LFmRYdMkACAANwrWA8cbAhi
RZ8cjRWro0QEEsQVGTiKkLAM5QNGFWrAQFNLBIzABQPLRktQQAA7

--------------080707010302060306060800--

Downloads:

MS Windows Visual C/C++ Libraries
Linux/CentOS C/C++ Libraries
MAC OS X C/C++ Libraries
Solaris C/C++ Libraries
C++ Builder Libraries
FreeBSD C++ Libraries
HP-UX C++ Libraries
BlackBerry QNX C++ Libraries
// Needs #include <CkMime.h>

    CkString strOut;

    CkMime mime;

    bool success;
    success = mime.UnlockComponent("Anything for 30-day trial.");
    if (success == false) {
        strOut.append(mime.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  Load the sampleMime2.txt file into the MIME object.
    //  (This file is available at http://www.chilkatsoft.com/testData/sampleMime2.txt )

    success = mime.LoadMimeFile("sampleMime2.txt");
    if (success == false) {
        strOut.append(mime.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  The GIF image is the 2nd sub-part located directly under the
    //  top-level MIME node.  Indexing begins at 0, therefore the 2nd
    //  sub-part is at index 1.
    CkMime *part2 = 0;
    part2 = mime.GetPart(1);

    //  -------------------------------
    //  Content-Disposition
    //  -------------------------------
    //  In this example, the Content-Disposition header field
    //  contains this value:
    //  attachment; filename="starfish.gif"

    //  To get the "filename", call GetHeaderFieldAttribute
    //  Header field names and attribute names are case insensitive.
    const char * filename;
    filename = part2->getHeaderFieldAttribute("Content-Disposition","filename");
    strOut.append("Filename: ");
    strOut.append(filename);
    strOut.append("\r\n");

    //  Because the "filename" is so often accessed, it is also available
    //  by accessing the "Filename" property:
    strOut.append("Filename: ");
    strOut.append(part2->filename());
    strOut.append("\r\n");

    //  The disposition (without attributes) which in this case
    //  is the string "attachment" is accessed via the Disposition property:
    strOut.append("Disposition: ");
    strOut.append(part2->disposition());
    strOut.append("\r\n");

    //  To get the full value of the Content-Disposition header field,
    //  call GetHeaderField.
    strOut.append("Content-Disposition: ");
    strOut.append(part2->GetHeaderField("Content-Disposition"));
    strOut.append("\r\n");

    //  -------------------------------
    //  Content-Type
    //  -------------------------------
    //  In this example, the Content-Type header field
    //  contains this value:
    //  image/gif; name="starfish.gif"

    //  To get the "name", call GetHeaderFieldAttribute
    const char * name;
    name = part2->getHeaderFieldAttribute("Content-Type","name");
    strOut.append("Content-Type name: ");
    strOut.append(name);
    strOut.append("\r\n");

    //  Because the "name" is so often accessed, it is also available
    //  by accessing the "Name" property:
    strOut.append("Content-Type name: ");
    strOut.append(part2->name());
    strOut.append("\r\n");

    //  The content-type without attributes is available in the
    //  ContentType property:
    strOut.append("Content-Type: ");
    strOut.append(part2->contentType());
    strOut.append("\r\n");

    //  To get the full value of the Content-Type header field,
    //  call GetHeaderField.
    strOut.append("Content-Type: ");
    strOut.append(part2->GetHeaderField("Content-Type"));
    strOut.append("\r\n");

    //  -------------------------------
    //  Content-Transfer-Encoding
    //  -------------------------------

    //  The Encoding property contains the value of the
    //  Content-Transfer-Encoding property.
    //  Calling GetHeaderField("Content-Transfer-Encoding") is
    //  equivalent to accessing the Encoding property:
    strOut.append("Content-Transfer-Encoding: ");
    strOut.append(part2->encoding());
    strOut.append("\r\n");
    strOut.append("Content-Transfer-Encoding: ");
    strOut.append(part2->GetHeaderField("Content-Transfer-Encoding"));
    strOut.append("\r\n");

    delete part2;

    strOut.append("Finished.\r\n");



    SetDlgItemText(IDC_EDIT1,strOut.getUnicode());

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.