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.
Edited by user
14 years ago
|
Reason: Not specified