Newsgroups : Borland : borland.public.delphi.internet.winsock : 2006 Jun : Re: MAPI + Body HTML + Attachments

www.cryer.info
Managed Newsgroup Archive

Re: MAPI + Body HTML + Attachments

Subject:Re: MAPI + Body HTML + Attachments
Posted by:"Beto Neto" (betoneto.t..@gmail.com)
Date:Mon, 12 Jun 2006 15:38:14

Ok, thank's, but it doesn't works!!!

Try this to confirm:
procedure TForm1.Button3Click(Sender: TObject);
var
  Email: TajMapiControl;
begin
  Email := TajMapiControl.Create(Self);
  try
    Email.ShowDialog := True;
    Email.Recipients.Add('beto_tbo@hotmail.com');
    Email.Subject := 'Any';
    with TStringList.Create do
      try
        LoadFromFile('C:\MyBody.html');

        Email.Body := Text;
      finally
        Free;
      end;
    Email.AttachedFiles.Add('C:\a_file.exe');
    Email.SendMail;
  finally
    Email.Free;
  end;
end;


"Andrew Jameson" <softspotsoftwareNO@SPAMgmail.com> escreveu na mensagem
news:448db191@newsgroups.borland.com...
> Here's some old code that I wrote a few years ago ...
>
> unit ajMAPI;
>
> interface
>
> uses
>   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
> Mapi;
>
> type
>   TajMapiErrorEvent = procedure(Sender : TObject; ErrCode : integer) of
> object;
>
>   TajMapiControl = class(TComponent)
>   public
>     constructor Create  (AOwner : TComponent); override;
>     destructor  Destroy;                       override;
>   private
>     fSubject          : string;
>     fMailText         : string;
>     fFromName         : string;
>     fFromAddress      : string;
>     fTOAddress        : TStrings;
>     fCCAddress        : TStrings;
>     fBCCAddress       : TStrings;
>     fAttachedFileName : TStrings;
>     fDisplayFileName  : TStrings;
>     fShowDialog       : boolean;
>     fOnUserAbort      : TNotifyEvent;
>     fOnMapiError      : TajMapiErrorEvent;
>     fOnSuccess        : TNotifyEvent;
>     procedure SetToAddress        (Value : TStrings);
>     procedure SetCCAddress        (Value : TStrings);
>     procedure SetBCCAddress       (Value : TStrings);
>     procedure SetAttachedFileName (Value : TStrings);
>   protected
>   public
>     procedure SendMail;
>     procedure Reset;
>   published
>     property Subject          : string            read fSubject
> write fSubject;
>     property Body             : string            read fMailText
> write fMailText;
>     property FromName         : string            read fFromName
> write fFromName;
>     property FromAddress      : string            read fFromAddress
> write fFromAddress;
>     property Recipients       : TStrings          read fTOAddress
> write SetTOAddress;
>     property CopyTo           : TStrings          read fCCAddress
> write SetCCAddress;
>     property BlindCopyTo      : TStrings          read fBCCAddress
> write SetBCCAddress;
>     property AttachedFiles    : TStrings          read fAttachedFileName
> write SetAttachedFileName;
>     property DisplayFileName  : TStrings          read fDisplayFileName;
>     property ShowDialog       : boolean           read fShowDialog
> write fShowDialog;
>
>     property OnUserAbort      : TNotifyEvent      read fOnUserAbort
> write fOnUserAbort;
>     property OnMapiError      : TajMapiErrorEvent read fOnMapiError
> write fOnMapiError;
>     property OnSuccess        : TNotifyEvent      read fOnSuccess
> write fOnSuccess;
>   end;
>
> procedure Register;
>
> implementation
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> constructor TajMapiControl.Create(AOwner : TComponent);
> begin
>   inherited;
>   fOnUserAbort      := nil;
>   fOnMapiError      := nil;
>   fOnSuccess        := nil;
>   fSubject          := '';
>   fMailtext         := '';
>   fFromName         := '';
>   fFromAddress      := '';
>   fTOAddress        := TStringList.Create;
>   fCCAddress        := TStringList.Create;
>   fBCCAddress       := TStringList.Create;
>   fAttachedFileName := TStringList.Create;
>   fDisplayFileName  := TStringList.Create;
>   fShowDialog       := false;
> end; {constructor}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> destructor TajMapiControl.Destroy;
> begin
>   fTOAddress.Free;
>   FCCAddress.Free;
>   FBCCAddress.Free;
>   fAttachedFileName.Free;
>   fDisplayFileName.Free;
>   inherited;
> end; {destructor}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> procedure TajMapiControl.SetToAddress(Value : TStrings);
> begin
>   fToAddress.Assign(Value);
> end; {SetToAddress}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> procedure TajMapiControl.SetCCAddress(Value : TStrings);
> begin
>   fCCAddress.Assign(Value);
> end; {SetCCAddress}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> procedure TajMapiControl.SetBCCAddress(Value : TStrings);
> begin
>   fBCCAddress.Assign(Value);
> end; {SetBCCAddress}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> procedure TajMapiControl.SetAttachedFileName(Value : TStrings);
> begin
>   fAttachedFileName.Assign(Value);
> end; {SetAttachedFileName}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> procedure TajMapiControl.Reset;
> begin
>   fSubject      := '';
>   fMailtext     := '';
>   fFromName     := '';
>   fFromAddress  := '';
>   fTOAddress.Clear;
>   fCCAddress.Clear;
>   fBCCAddress.Clear;
>   fAttachedFileName.Clear;
>   fDisplayFileName.Clear;
> end; {Reset}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> procedure TajMapiControl.SendMail;
> var
>   MapiMessage         : TMapiMessage;
>   MError              : Cardinal;
>   Sender              : TMapiRecipDesc;
>   PRecip, Recipients  : PMapiRecipDesc;
>   PFiles, Attachments : PMapiFileDesc;
>   lp1                 : integer;
> begin
>
>   MapiMessage.nRecipCount := fTOAddress.Count + fCCAddress.Count +
> fBCCAddress.Count;
>   GetMem(Recipients, MapiMessage.nRecipCount * SizeOf(TMapiRecipDesc));
>
>   try
>     with MapiMessage do begin
>       ulReserved          := 0;
>       lpszSubject         := PChar(fSubject);
>       lpszNoteText        := PChar(fMailText);
>       lpszMessageType     := nil;
>       lpszDateReceived    := nil;
>       lpszConversationID  := nil;
>       flFlags             := 0;
>
>       Sender.ulReserved   := 0;
>       Sender.ulRecipClass := MAPI_ORIG;
>       Sender.lpszName     := PChar(FromName);
>       Sender.lpszAddress  := PChar(FromAddress);
>       Sender.ulEIDSize    := 0;
>       Sender.lpEntryID    := nil;
>       lpOriginator        := @Sender;
>
>       PRecip              := Recipients;
>
>       if (nRecipCount > 0) then begin
>         for lp1 := 0 to pred(fTOAddress.Count) do begin
>           PRecip^.ulReserved    := 0;
>           PRecip^.ulRecipClass  := MAPI_TO;
>           PRecip^.lpszName      := PChar(fTOAddress.Strings[lp1]);
>           PRecip^.lpszAddress   := PChar('SMTP:' +
fTOAddress.Strings[lp1]);
>           PRecip^.ulEIDSize     := 0;
>           PRecip^.lpEntryID     := nil;
>           inc(PRecip);
>         end; {for}
>
>         for lp1 := 0 to pred(fCCAddress.Count) do begin
>           PRecip^.ulReserved    := 0;
>           PRecip^.ulRecipClass  := MAPI_CC;
>           PRecip^.lpszName      := PChar(fCCAddress.Strings[lp1]);
>           PRecip^.lpszAddress   := PChar('SMTP:' +
fCCAddress.Strings[lp1]);
>           PRecip^.ulEIDSize     := 0;
>           PRecip^.lpEntryID     := nil;
>           inc(PRecip);
>         end; {for}
>
>         for lp1 := 0 to pred(fBCCAddress.Count) do begin
>           PRecip^.ulReserved    := 0;
>           PRecip^.ulRecipClass  := MAPI_BCC;
>           PRecip^.lpszName      := PChar(fBCCAddress.Strings[lp1]);
>           PRecip^.lpszAddress   := PChar('SMTP:' +
> fBCCAddress.Strings[lp1]);
>           PRecip^.ulEIDSize     := 0;
>           PRecip^.lpEntryID     := nil;
>           inc(PRecip);
>         end; {for}
>       end; {if}
>
>       lpRecips  := Recipients;
>
>       if (fAttachedFileName.Count > 0) then begin
>         nFileCount  := fAttachedFileName.Count;
>         GetMem(Attachments, MapiMessage.nFileCount *
SizeOf(TMapiFileDesc));
>
>         PFiles  := Attachments;
>
>         fDisplayFileName.Clear;
>         for lp1 := 0 to pred(fAttachedFileName.Count) do
>           fDisplayFileName.Add(ExtractFileName(fAttachedFileName[lp1]));
>
>         if (nFileCount > 0) then begin
>           for lp1 := 0 to pred(fAttachedFileName.Count) do begin
>             Attachments^.lpszPathName :=
> PChar(fAttachedFileName.Strings[lp1]);
>             Attachments^.lpszFileName :=
> PChar(fDisplayFileName.Strings[lp1]);
>             Attachments^.ulReserved   := 0;
>             Attachments^.flFlags      := 0;
>             Attachments^.nPosition    := Cardinal(-1);
>             Attachments^.lpFileType   := nil;
>             inc(Attachments);
>           end; {for}
>         end; {if}
>
>         lpFiles := PFiles;
>
>       end else begin
>         nFileCount  := 0;
>         lpFiles     := nil;
>       end; {if}
>     end; {if}
>
>     if fShowDialog then
>       MError  := MapiSendMail(0, Application.Handle, MapiMessage,
> MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0)
>     else
>       MError  := MapiSendMail(0, Application.Handle, MapiMessage, 0, 0);
>
>     case MError of
>       MAPI_E_USER_ABORT : begin
>                             if Assigned(fOnUserAbort) then
>                               fOnUserAbort(Self);
>                           end;
>       SUCCESS_SUCCESS   : begin
>                             if Assigned(fOnSuccess) then
>                               fOnSuccess(Self);
>     end else
>                           begin
>                             if Assigned(fOnMapiError) then
>                               fOnMapiError(Self, MError);
>                           end;
>     end;
>   finally
>     FreeMem(Recipients);
>   end; {try}
> end; {SendMail}
>
>
{---------------------------------------------------------------------------
-----------------------}
>
> procedure Register;
> begin
>   RegisterComponents('SoftSpot', [TajMapiControl]);
> end; {Register}
>
>
{---------------------------------------------------------------------------
-----------------------}
> {ajMapi}
> end.
>
>
> Example use :
>
> var
>   MapiControl : TajMapiControl;
> begin
>   try
>     MapiControl             := TajMapiControl.Create(nil);
>     MapiControl.ShowDialog  := true;
>     MapiControl.Reset;
>     MapiControl.Recipients.Add('errors@errors.com');
>     MapiControl.Subject     := 'Application Error Report';
>     MapiControl.Body        := rchError.Text;
>     if FileExists(fLogFile) then
>       MapiControl.AttachedFiles.Add(fLogFile);
>     MapiControl.ShowDialog  := false;
>     MapiControl.SendMail;
>   finally
>     FreeAndNil(MapiControl);
>   end; {try}
> end;
>
> // We don't do it this way anymore - Indy instead TIdSMTP !
>
> Andrew
>
>
> "Beto Neto" <betoneto.tbo@gmail.com> wrote in message
> news:448da617$1@newsgroups.borland.com...
> > How can I create a email using MAPI with the body as HTML and with any
> > attachments ?
> >
> > Thank's!

Replies:

In response to:

www.cryer.info
Managed Newsgroup Archive