ivan
  • ivan
  • 100% (Exalted)
  • Administration Topic Starter
14 years ago
C++/CLI Example

When an Outlook user composes and sends a message using either Rich Text Format or HTML Format, Outlook automagically generates a file, winmail.dat, and attaches it to the end of the email. The winmail.dat contains the rich text body and original attachments. To parse winmail.dat (TNEF stream) file, we should use ParseTNEF method.

// The following example codes demonstrate parsing winmail.dat - TNEF stream
// To get full sample projects, please download and install EAGetMail on your machine.
// To run it correctly, please change email server, user, password, folder, file name value to yours


#include "stdafx.h" 

using namespace System; 
using namespace System::Text; 
using namespace System::Collections; 
using namespace System::IO; 

// Add EAGetMail namespace
using namespace EAGetMail; 

void ParseEmail(String ^emlFile) 
{ 
    Mail ^oMail = gcnew Mail("TryIt"); 
    oMail->Load(emlFile, false); 

    // Parse Sender
    Console::WriteLine("From: {0}", oMail->From->ToString()); 

    // Parse Mail To
    array<MailAddress^> ^addrs = oMail->To; 
    for (int i = 0; i < addrs->Length; i++) 
    { 
        Console::WriteLine("To: {0}", addrs[i]->ToString()); 
    } 

    // Parse Mail CC
    addrs = oMail->Cc; 
    for (int i = 0; i < addrs->Length; i++) 
    { 
        Console::WriteLine("To: {0}", addrs[i]->ToString()); 
    } 

    // Parse Mail Subject
    Console::WriteLine("Subject: {0}", oMail->Subject); 

    // Parse Mail Text/Plain body
    Console::WriteLine("TextBody: {0}", oMail->TextBody); 

    // Parse Mail Html Body
    Console::WriteLine("HtmlBody: {0}", oMail->HtmlBody ); 

    //Parse Attachments
    array<Attachment^> ^atts = oMail->Attachments; 
    for (int i = 0; i < atts->Length; i++) 
    { 
        Attachment ^att = atts[i]; 

        // This attachment is in OUTLOOK RTF format(TNEF), decode it here.
        if (String::Compare(att->Name, "winmail.dat") == 0) 
        { 
            array<Attachment^> ^tatts = nullptr; 
            try 
            { 
                tatts = Mail::ParseTNEF(att->Content, true); 
            } 
            catch (Exception ^ep) 
            { 
                Console::WriteLine(ep->Message); 
                continue; 
            } 
            int y = tatts->Length; 
            for (int x = 0; x < y; x++) 
            { 
                Attachment ^tatt = tattsāŒ; 
                Console::WriteLine("winmail.dat: {0}", tatt->Name); 
            } 
            continue; 
        } 

        Console::WriteLine("Attachment: {0}", atts[i]->Name); 
    } 
} 

int main(array<System::String ^> ^args) 
{ 

    ParseEmail("c:\\my folder\\test.eml"); 

    return 0; 
} 
Click here to read original topic - full version ... 

If you have any comments or questions about above example codes, please add your comments here.

EXPLORE TUTORIALS

© All Rights Reserved, AIFEI Software Limited & AdminSystem Software Limited.