Rank: Administration
Groups: Administrators
Joined: 11/11/2010(UTC) Posts: 1,154
Thanks: 9 times Was thanked: 55 time(s) in 55 post(s)
|
VC++ Example// The following example codes demonstrate sending email message using email queue + database // 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 Code:
#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");
// Set email subject
oSmtp->Subject = _T("simple email from Visual C++ project");
// 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();
// EASendMail will use the following connection to connect to the database,
// the syntax is same as ADO connection object.
oSmtp->AddHeader(_T("X-Data-Connection"),
_T("Driver={Microsoft Access Driver (*.mdb)};Dbq={$var_easendmailpath}\\easendmail_demo.mdb;Uid=;Pwd=;"));
// EASendMail will select the fields by the following sql statement
// before sending email,
// then pick the recipient address from specified field.
oSmtp->AddHeader(_T("X-Sql-Select"), _T("SELECT id, name, address FROM Recipients"));
// Pick "name" field as the recipient name and "address" field as the recipient address.
// You can also use {$var_srecord:fieldname} to pick any field in X-Sql-Select statement
// and put it to subject, bodytext, then EASendMail will replace it automatially.
oSmtp->DisplayTo = _T("\"{$var_srecord:name}\" <{$var_srecord:address}>");
oSmtp->AddHeader( _T("X-Rcpt-To"), _T("{$var_srecord:address}"));
// EASendMail service will execute the following sql statement on
// every email was sent successfully.
oSmtp->AddHeader(_T("X-Sql-OnSentSuccess"),
_T("INSERT INTO sentlog ( server, email ) VALUES( '{$var_server}', '{$var_rcptaddr}' )"));
// EASendMail service will execute the following sql statement on
// every email could not be sent.
oSmtp->AddHeader(_T("X-Sql-OnSentError"),
_T("INSERT INTO errorlog( email, server, errorcode, errordescription )")
_T("VALUES( '{$var_rcptaddr}', '{$var_server}', '{$var_errcode}', '{$var_errdesc}' )"));
_bstr_t bodytext;
bodytext = "Hi {$var_srecord:name}\r\n";
bodytext += "Send email with queue.\r\n\r\n";
bodytext += "From:Tester\r\n";
// {$var_srecord:address} will be replaced by EASendMail automatically.
bodytext += "To:{$var_srecord:address}\r\n\r\n";
bodytext += "Your id in database is {$var_srecord:id}.\r\n";
oSmtp->BodyText = bodytext;
_tprintf(_T("Start to send email ...\r\n" ));
if( oSmtp->SendMailToQueue() == 0 )
{
_tprintf( _T("email was sent to queue 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.
|