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

// The following example codes demonstrate parsing S/MIME email - digital signature and decryption
// 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); 

    if (oMail->IsEncrypted) 
    { 
        try 
        { 
            // This email is encrypted, we decrypt it by user default certificate.
            // you can also use specified certificate like this
            // Certificate ^oCert = gcnew Certificate();
            // oCert->Load("c:\\test.pfx", "pfxpassword",
            // Certificate::CertificateKeyLocation::CRYPT_USER_KEYSET);
            // oMail = oMail->Decrypt( oCert );
            oMail = oMail->Decrypt(nullptr); 
        } 
        catch (Exception ^ep) 
        { 
            Console::WriteLine(ep->Message); 
        } 
    } 

    if (oMail->IsSigned) 
    { 
        try 
        { 
            // This email is digital signed.
            EAGetMail::Certificate ^cert = oMail->VerifySignature(); 
            Console::WriteLine("This email contains a valid digital signature."); 

            // You can add the certificate to your certificate storage like this
            // cert->AddToStore(
            // Certificate::CertificateStoreLocation::CERT_SYSTEM_STORE_CURRENT_USER,
            // "addressbook" );
            // then you can use send the encrypted email back to this sender.
        } 
        catch (Exception ^ep) 
        { 
            Console::WriteLine(ep->Message); 
        } 
    } 

    // 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 Subject
    Console::WriteLine("Subject: {0}", oMail->Subject); 

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

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

    // Parse Attachments
    array<Attachment^> ^atts = oMail->Attachments; 
    for (int i = 0; i < atts->Length; i++) 
    { 
        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.