Sending E-mail with attachment using outlook.

How to send e-mail with attachment using Outlook.

The whole demo stuffs (*.dpr,*.pas etc) are in the MailDemo.Zip.



The unit that can do the job is scratched below:



unit OutLookMail;



interface

USES

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Outlook8, OleServer, COMobj, ActiveX;



type

  TMailRecord= record

    FileToAttach : String;

    MailTo : String;

    CC : String;

    BCC : String;

    Subject : String;

    Body : String;

  end;



procedure OutLookMailProc(MailDetail:TMailRecord);





implementation

procedure OutLookMailProc(MailDetail:TMailRecord);

VAR

  objOutlook : OutlookApplication;

  CurrentInterface : IUnknown;

  ActiveApplication : HResult;

  CurrentMailItem : MailItem;

  MailInspector : Inspector;

begin

  ActiveApplication:=GetActiveObject(CLASS_OutlookApplication, nil, CurrentInterface);

  if ActiveApplication = MK_E_UNAVAILABLE then

     objOutlook := CoOutlookApplication.Create

  else

  begin

    OleCheck(ActiveApplication);

    OleCheck(CurrentInterface.QueryInterface(OutlookApplication, objOutlook));

  end;

  CurrentMailItem:= objOutlook.CreateItem(0) as MailItem;

  CurrentMailItem.To_ :=MailDetail.MailTo;

  if MailDetail.FileToAttach<>'' then

    CurrentMailItem.Attachments.Add(MailDetail.FileToAttach,EmptyParam, EmptyParam, EmptyParam);

  CurrentMailItem.cc:=MailDetail.CC;

  CurrentMailItem.BCC:=MailDetail.BCC;

  CurrentMailItem.Subject := MailDetail.Subject;

  CurrentMailItem.Body := MailDetail.Body;


  MailInspector := CurrentMailItem.GetInspector;

  MailInspector.Display(False);

  Showmessage('I am waiting you to finish the mail process. Please click OK when done !');

  objOutlook.Quit;

  objOutlook := nil;

end;







end.





Unit for the Demo:

=================

unit MailDemo;



interface



uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, Db,qrprntr, Qrctrls,qrExtra,qrexport, DBTables, QuickRpt, ExtCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    EditMailTo: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    EditSubject: TEdit;

    Label3: TLabel;

    EditFileToAttach: TEdit;

    Memo1: TMemo;

    Label4: TLabel;

    Label5: TLabel;

    EditCC: TEdit;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



uses OutLookMail;



{$R *.DFM}



const CRLF=chr(13)+chr(10);

procedure TForm1.Button1Click(Sender: TObject);

var

MailDetail:TMailRecord;

x:integer;

begin

  MailDetail.FileToAttach:=EditFileToAttach.Text;

  MailDetail.MailTo:=EditMailTo.Text;

  MailDetail.CC:=EditCC.Text;

  MailDetail.subject:=EditSubject.Text;

  MailDetail.Body:='';

  for x:=0 to Memo1.Lines.Count-1 do

    MailDetail.Body:=MailDetail.Body+Memo1.lines[x]+CRLF;

  OutLookMailProc(MailDetail);

end;



end.

 

Share this article!

Follow us!

Find more helpful articles:

Comments

Oct
10

Where could I download the MailDemo.Zip?

By KUANG-CHENG WANG