ivan
  • ivan
  • 100% (Exalted)
  • Administration Topic Starter
14 years ago
VC++ 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" 

#include "easendmailobj.tlh" 
using namespace EASendMailObjLib; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    ::CoInitialize( NULL ); 

    IMailPtr oSmtp = NULL; 
    oSmtp.CreateInstance( "EASendMailObj.Mail"); 
    oSmtp->LicenseCode = _T("TryIt"); 

    // Set your sender email address
    oSmtp->FromAddr = _T("test@emailarchitect.net"); 

    // Add recipient email address
    oSmtp->AddRecipientEx( _T("support@emailarchitect.net"), 0 ); 

    // Set email subject
    oSmtp->Subject = _T("Encrypted email from Visual C++ (S/MIME)"); 

    // Set email body
    oSmtp->BodyText = _T("this is a test encrypted email sent from Visual C++"); 

    // Your SMTP server address
    oSmtp->ServerAddr = _T("smtp.emailarchitect.net"); 

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

    // If your smtp server requires SSL connection, please add this line
    // oSmtp->SSL_init();

    //add signer digital signature
    if( oSmtp->SignerCert->FindSubject(_T("test@emailarchitect.net"), 
        CERT_SYSTEM_STORE_CURRENT_USER , _T("my")) == VARIANT_FALSE ) 
    { 
        _tprintf(_T("Error with signer certificate; %s\r\n"), 
            (const TCHAR*)oSmtp->SignerCert->GetLastError()); 
        return 0; 
    } 

    if( oSmtp->SignerCert->HasPrivateKey == VARIANT_FALSE ) 
    { 
        _tprintf(_T("certificate does not have a private key, it can not sign email.\r\n" )); 
        return 0; 
    } 

    // Find the encrypting certificate for every recipients
    ICertificatePtr oCert = NULL; 
    oCert.CreateInstance("EASendMailObj.Certificate"); 
    if( oCert->FindSubject(_T("support@emailarchitect.net"), 
            CERT_SYSTEM_STORE_CURRENT_USER, _T("AddressBook")) == VARIANT_FALSE ) 
    { 
        if(oCert->FindSubject(_T("support@emailarchitect.net"), 
                CERT_SYSTEM_STORE_CURRENT_USER, _T("my")) == VARIANT_FALSE ) 
        { 
            _tprintf( _T("Encrypting certificate not found; %s\r\n"), 
                    (const TCHAR*)oCert->GetLastError()); 
            oCert.Release(); 
            return 0; 
        } 
    } 

    // Add encrypting certificate
    oSmtp->RecipientsCerts->Add( oCert ); 
    oCert.Release(); 

    _tprintf(_T("Start to send email ...\r\n" )); 

    if( oSmtp->SendMail() == 0 ) 
    { 
        _tprintf( _T("email was sent successfully!\r\n")); 
    } 
    else 
    { 
        _tprintf( _T("failed to send email with the following error: %s\r\n"), 
            (const TCHAR*)oSmtp->GetLastErrDescription()); 
    } 

    if( oSmtp != NULL ) 
        oSmtp.Release(); 

    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.