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


#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.

EXPLORE TUTORIALS

© All Rights Reserved, AIFEI Software Limited & AdminSystem Software Limited.