Jump to content

sh17

Members
  • Content Count

    32
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by sh17


  1. Not very different

     

      TMailOutlook = class(TObject)
      private const
        olMailItem = $00000000;
      private
        class function HaveActiveOleObject(const ClassName: string): boolean;
      public
        class procedure Execute(const _To,_ToCC,_ToBCC,_Subject,_Body,_Attachment : String);
      end;
    
    { TMailOutlook }
    
    class procedure TMailOutlook.Execute(const _To, _ToCC, _ToBCC, _Subject,
      _Body,_Attachment: String);
    var
      Outlook: OleVariant;
      MailV: Variant;
    begin
      if not HaveActiveOleObject('Outlook.Application') then
        Outlook := CreateOleObject('Outlook.Application')
      else
        Outlook:= GetActiveOleObject('Outlook.Application');
      MailV := Outlook.CreateItem(olMailItem);
      if (_To <> '') then MailV.To := _To;
      if (_ToBCC <> '') then MailV.BCC:= _ToBCC;
      if (_ToCC <> '') then MailV.CC:= _ToCC;
      MailV.Subject := _Subject;
      MailV.Body := _Body;
      if _Attachment <> '' then
      if FileExists(_Attachment) then
        MailV.Attachments.Add(_Attachment);
      MailV.Display;
    end;
    
    //// Want to Bypass exception so we check this without using the activex unit
    class function TMailOutlook.HaveActiveOleObject(
      const ClassName: string): boolean;
    var
      ClassID: TCLSID;
      Unknown: IUnknown;
      oleresult: HResult;
    begin
      ClassID := ProgIDToClassID(ClassName);
      oleResult:= GetActiveObject(ClassID, nil, Unknown);
      result:= Succeeded(oleResult);
    end;

     

    • Like 1
×