Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Outlook Sicherheitsmeldung (https://www.delphipraxis.net/55883-outlook-sicherheitsmeldung.html)

LuckySpacy 15. Jan 2006 10:25

Re: Outlook Sicherheitsmeldung
 
Ich habe mich gerade mit diesem Thema beschäftigt.
Alles was ich dazu gefunden habe, erschien mir äußerst kompliziert.
Um andere jetzt die Stundenlange suche im Internet zu ersparen, möchte ich meine Lösung kurz aufzeigen.

Die Lösung für mich heißt Redemption.dll

Hier ist der Link zur Outlook Redemption: www.dimastr.com
oder direkt herunterladen unter: Redemption.zip

Dann die Install.exe ausführen.

Hier ist ein kleines Beispielprogramm:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
  olFolderContacts = $0000000A;


type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FOutlook      : Variant;
    FMAPI         : Variant;
    FSafeContact  : Variant;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  ComObj;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOutlook := CreateOleObject('Outlook.Application');
  FMAPI   := FOutlook.GetNameSpace('MAPI');
  FMAPI.Logon;
  FSafeContact := createoleobject('redemption.SafeContactItem');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FMAPI.Logoff;
  FSafeContact := Unassigned;
  FOutlook    := Unassigned;
  FMAPI       := Unassigned;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ContactList: Variant;
begin
  ContactList      := FMAPI.GetDefaultFolder(olFolderContacts);
  try
    FSafeContact.Item := ContactList.Items.Item(1);
    Edit1.Text       := FSafeContact.Email1Address;
  finally
    ContactList      := Unassigned;
  end;
end;
Normalerweise würde beim Lesen der Email1Address von Outlook eine Sicherheitsmeldung kommen.
Dies sollte jetzt dank der Redemption.dll nicht mehr passieren.

Alle andere Zugriffe wie z.B. auf Termine oder EMail funktionieren ähnlich.

Heffalump 15. Jan 2006 17:26

Re: Outlook Sicherheitsmeldung
 
Hat den Nachteil, das Du auf die Weiterentwicklung der Software angewiesen bist. Im Fehlerfall wird es zudem schwehr werden, die Ursache zu finden (liegt es an Deiner Source oder an der Implementierung der Zusatzsoftware oder an der MAPI). Was ist wenn die nächste Outlookversion auf den Markt kommt, einer Deiner Kunden diese einsetzen muss und die "Brückensoftware" diese Outlookversion noch nicht unterstützt? Ich bin dann doch lieber für eine eigene Implementierung der benötigten Funktionen. Dass das auch mit dem Auslesen von Kontaktinformationen funktioniert (ohne Sicherheitshinweis), kannst Du diesem Beitrag entnehmen.

LuckySpacy 16. Jan 2006 10:03

Re: Outlook Sicherheitsmeldung
 
Zitat:

Zitat von Heffalump
Hat den Nachteil, das Du auf die Weiterentwicklung der Software angewiesen bist.

Das stimmt zwar, aber es funktioniert.
Meine Ausführungen sind an die gerichtet, die schnell und unkompliziert eine Lösung suchen.

Ich hatte mir übrigens auch Deine Lösung angeschaut. Nur diese ist leider schon im Ansatz gescheitert.
Ich habe mir Dein Programm MapiTestZip.zip heruntergeladen und wollte den Code in Delphi 7 kompilieren.
Ich bekam ein Fehler in folgender Zeile: "function PropertyIDtoPropertyTag(&object: IMAPIProp; pvID: ULONG): ULONG;"
Die Fehlermeldung lautet: "[Fehler] Unit4.pas(48 ) : Ungültiges Zeichen in Eingabedatei: '&' ($26)"
Ich muss gestehen, ich kann nichts damit anfangen und weiß auch nicht was falsch ist.

Möglicherweise liegt es auch an den eingebundenen Dateien: "mapidefs, mapiguid, mapitags, mapix".
Diese Dateien wurden ja von Dir nicht mitgeliefert.
Ich habe Sie im Forum Delphi3000.com gefunden.

Trotz alle dem habe ich mir Dein Quellcode angeschaut.
Um das alles zu Verstehen reicht "normales" Delphi-Wissen nicht aus.
Da muss man sich schon länger damit auseinander setzen.

Aber vielleicht kannst Du mir trotzdem helfen.
Was muss ich tun, damit ich Dein Programm fehlerfrei kompilieren kann?
Ich würde es nämlich gerne einmal debuggen.

Und was macht das Programm OutSpy.exe ?
Wieso benötige ich das?
Das Programm habe ich mir bisher noch nicht installiert.

Heffalump 16. Jan 2006 10:42

Re: Outlook Sicherheitsmeldung
 
Zitat:

Zitat von LuckySpacy
Meine Ausführungen sind an die gerichtet, die schnell und unkompliziert eine Lösung suchen.

Es gibt eine für mich wichtige Erfahrung, welche ich bisher im Rahmen der Programmierung gemacht habe. Schnelle Lösungen führen im Nachgang immer zu Problemen.

Zitat:

Zitat von LuckySpacy
Ich hatte mir übrigens auch Deine Lösung angeschaut. Nur diese ist leider schon im Ansatz gescheitert.
Ich habe mir Dein Programm MapiTestZip.zip heruntergeladen und wollte den Code in Delphi 7 kompilieren.
Ich bekam ein Fehler in folgender Zeile: "function PropertyIDtoPropertyTag(&object: IMAPIProp; pvID: ULONG): ULONG;"
Die Fehlermeldung lautet: "[Fehler] Unit4.pas(48 ) : Ungültiges Zeichen in Eingabedatei: '&' ($26)"
Ich muss gestehen, ich kann nichts damit anfangen und weiß auch nicht was falsch ist.

Ersetze das '&' einfach durch '_', dann sollte es funktionieren.

Zitat:

Zitat von LuckySpacy
Möglicherweise liegt es auch an den eingebundenen Dateien: "mapidefs, mapiguid, mapitags, mapix".
Diese Dateien wurden ja von Dir nicht mitgeliefert.
Ich habe Sie im Forum Delphi3000.com gefunden.

Die Dateien kannst Du von der gleichen Webseite herunterladen, von der Deine DLL stammt. Unter Resources gibt es den Punkt "Extended MAPI headers for Borland Delphi ".

Zitat:

Zitat von LuckySpacy
Trotz alle dem habe ich mir Dein Quellcode angeschaut.
Um das alles zu Verstehen reicht "normales" Delphi-Wissen nicht aus.
Da muss man sich schon länger damit auseinander setzen.[Fehler]

Ich denke mal, das man sich generell mit der Software, den Schnittstellen und deren Arbeitsweise auseinander setzen muss. Ich verstehe durchaus, das die MAPI Programmierung nicht gerade einfach ist, da es sich hier um eine sehr umfangreiche Schnittstelle handelt. Wenn man es aber erst einmal verstanden hat, dann macht das auch noch Spaß und die gesammelten Erfahrungen sind Gold wert.

Zitat:

Zitat von LuckySpacy
Und was macht das Programm OutSpy.exe ?
Wieso benötige ich das?
Das Programm habe ich mir bisher noch nicht installiert.

OutSpy ist das Setup für ein Outlook Addon. Dieses zeigt in ausführlicher Weise die internen Eigenschaften und Zugriffswege von Outlook im Zusammenspiel mit der MAPI.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz