Sample code for 30+ languages & platforms
C++

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 C++ Downloads

C++
#include <CkEmail.h>

void ChilkatSample(void)
    {
    bool success = false;

    const char *emlPath = "qa_data/eml/multipart_digest.eml";

    CkEmail email;

    //  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 = email.LoadEml(emlPath);
    if (success == false) {
        std::cout << email.lastErrorText() << "\r\n";
        return;
    }

    int numDigests = email.get_NumDigests();
    std::cout << "num digests = " << numDigests << "\r\n";

    CkEmail eDigest;
    int i = 0;
    while (i < numDigests) {
        email.GetDigestEmail(i,eDigest);
        std::cout << i << ":" << eDigest.fromAddress() << ", " << eDigest.subject() << "\r\n";
        const char *m = eDigest.getHeaderField("Message");
        if (eDigest.get_LastMethodSuccess() == true) {
            std::cout << "    Message = " << m << "\r\n";
        }

        i = i + 1;
    }
    }