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


Unit Unit1; 

Interface 

Uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, EASendMailObjLib_TLB; // add EASendMail Unit 

Type 
  TForm1 = Class(TForm) 
    Button1: TButton; 
    Procedure Button1Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  End; 

Var 
  Form1: TForm1; 

Implementation 

{$R *.dfm} 

Procedure TForm1.Button1Click(Sender: TObject); 
Var 
  oSmtp : TMail;
  s: WideString; 
Begin 
  oSmtp := TMail.Create(Application); 
  oSmtp.LicenseCode := 'TryIt'; 

  // Set your sender email address
  oSmtp.FromAddr := 'test@emailarchitect.net'; 

  // Set email subject
  oSmtp.Subject := 'simple email from Delphi project'; 

  // Your SMTP server address
  oSmtp.ServerAddr := 'smtp.emailarchitect.net'; 

  // User and password for ESMTP authentication, if your server doesn't require
  // user authentication, please remove the following codes
  oSmtp.UserName := 'test@emailarchitect.net'; 
  oSmtp.Password := '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('X-Data-Connection', 
  '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( 'X-Sql-Select', '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 := '"{$var_srecord:name}" <{$var_srecord:address}>'; 
  oSmtp.AddHeader( 'X-Rcpt-To', '{$var_srecord:address}'); 

  // EASendMail service will execute the following sql statement on
  // every email was sent successfully.
  oSmtp.AddHeader( 'X-Sql-OnSentSuccess', 
  '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( 'X-Sql-OnSentError', 
  'INSERT INTO errorlog( email, server, errorcode, errordescription ) ' + 
  'VALUES( ''{$var_rcptaddr}'', ''{$var_server}'', ''{$var_errcode}'', ''{$var_errdesc}'' )'); 

  s := 'Hi {$var_srecord:name}, ' + #13+#10; 
  s := s + 'Send email with queue.' + #13+#10 + #13+#10; 
  s := s + 'From:Tester'; 
  // {$var_srecord:address} will be replaced by EASendMail automatically.
  s := s + 'To:{$var_srecord:address}' + #13+#10 + #13+#10; 
  s := s + 'Your id in database is {$var_srecord:id}.' + #13+#10 + #13+#10; 

  oSmtp.bodytext := s; 
  ShowMessage( 'start to send email ...' ); 

  If oSmtp.SendMailToQueue() = 0 Then 
    ShowMessage( 'email was sent to queue successfully!' ) 
  Else 
    ShowMessage( 'failed to send email with the following error: ' 
    + oSmtp.GetLastErrDescription()); 

End; 

End.

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.