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

// The following example codes demonstrate encrypting email message with digital signature - S/MIME
// To get full sample projects, please download and install EASendMail on your machine.
// To run it correctly, please change SMTP server, user, password, sender, recipient value to yours


#include "stdafx.h" 

using namespace System; 
using namespace EASendMail; 

int main(array<System::String ^> ^args) 
{ 
    SmtpMail ^oMail = gcnew SmtpMail("TryIt"); 
    SmtpClient ^oSmtp = gcnew SmtpClient(); 

    // Set sender email address, please change it to yours
    oMail->From = "test@emailarchitect.net"; 

    // Set recipient email address, please change it to yours
    oMail->To = "support@emailarchitect.net"; 

    // Set email subject
    oMail->Subject = "test encrypted email from Managed C++ project"; 

    // Set email body
    oMail->TextBody = "this is a test encrypted email sent from Managed C++"; 

    // Your SMTP server address
    SmtpServer ^oServer = gcnew SmtpServer("smtp.emailarchitect.net"); 

    // User and password for ESMTP authentication, if your server doesn't require
    // User authentication, please remove the following codes.
    oServer->User = "test@emailarchitect.net"; 
    oServer->Password = "testpassword"; 

    try 
    { 
        // Find certificate by email adddress in My Personal Store.
        // Once the certificate is loaded to From, the email content
        // will be signed automatically
        oMail->From->Certificate->FindSubject(oMail->From->Address, 
            Certificate::CertificateStoreLocation::CERT_SYSTEM_STORE_CURRENT_USER, 
            "My"); 
    } 
    catch (Exception ^exp) 
    { 
        Console::WriteLine("No sign certificate found for <" + 
            oMail->From->Address + ">:" + exp->Message); 
    } 

    int count = oMail->To->Count; 
    for (int i = 0; i < count; i++) 
    { 
        MailAddress ^oAddress = dynamic_cast<MailAddress^>(oMail->To[i]); 

        try 
        { 
            // Find certificate by email adddress in My Other Peoples Store.
            // The certificate can be also imported by *.cer file like this:
            // oAddress->Certificate->Load("c:\\encrypt1.cer");
            // Once the certificate is loaded to MailAddress, the email content
            // will be encrypted automatically

            oAddress->Certificate->FindSubject(oAddress->Address, 
                Certificate::CertificateStoreLocation::CERT_SYSTEM_STORE_CURRENT_USER, 
                "AddressBook"); 
        } 
        catch (Exception ^ep) 
        { 
            try 
            { 
                oAddress->Certificate->FindSubject(oAddress->Address, 
                    Certificate::CertificateStoreLocation::CERT_SYSTEM_STORE_CURRENT_USER, 
                    "My"); 
            } 
            catch (Exception ^exp) 
            { 
                Console::WriteLine("No encryption certificate found for <" + 
                     oAddress->Address + ">:" + exp->Message); 
            } 
        } 
    } 

    // If your smtp server requires SSL/TLS connection, please add this line
    // oServer->ConnectType = SmtpConnectType::ConnectSSLAuto;

    try 
    { 
        Console::WriteLine("start to send encrypted email ..."); 
        oSmtp->SendMail(oServer, oMail); 
        Console::WriteLine("email was sent successfully!"); 
    } 
    catch (Exception ^ep) 
    { 
        Console::WriteLine("failed to send email with the following error:"); 
        Console::WriteLine(ep->Message); 
    } 

    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.