Rank: Administration
Groups: Administrators
Joined: 11/11/2010(UTC) Posts: 1,154
Thanks: 9 times Was thanked: 55 time(s) in 55 post(s)
|
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 Code:
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.
|