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.