Mit Outlook 98 hat Microsoft zum ersten Mal etwas mehr für die Sicherheit
des Mailers getan und über ein Sicherheits-Patch den sog. "Outlook Object Model
Guard" implementiert, der Zugriffe von außen auf Outlook-Objekte verhindert.
Vor dem Zugriff erscheint zunächst ein Warnhinweis und dann ein Dialog, in dem
man angeben kann wie lange der Zugriff gestattet ist.
Entwickelt man nun z.B. in VB oder einer anderen Sprache Programme, die z.B.
Outlook-Kontakte auslesen oder über MAPI eMails versenden sollen, so ist diese
Sicherheitsfunktion zwar schön, aber extrem lästig für den Anwender.
Es gibt nun zwei Lösungsansätze. In einer Exchange-Umgebung ist es möglich
über das Office-ResourceKit das sog. "Outlook Security Features Administrative
Package" auf dem Server zu installieren. Nähere Informationen dazu gibt es auf
folgenden Seiten:
Nun besitzt aber nicht jeder einen Exchange-Server. Um nun trotzdem gewisse
Dinge automatisieren zu können hat Dmitry Streblechenko die sog.
Outlook-Redemption-Bibliothek entwickelt, über die man den Zugriff auf die
Outlook-Objekte ohne Sicherheitsabfrage hinbekommt.
Outlook Redemption ist eine selbst-registrierende COM-Bibliothek, die die
durch das Sicherheits-Patch geblockten Funktionalitäten über das nicht betroffene
Extended MAPI abbildet. Der Umgang mit den Redemption-Objekte ist sehr
stark an die normale Vorgehensweise angelehnt. Grundlage sind hierbei die Redemption-Objekte
wie z.B. SafeMailItem, denen im Code lediglich ein Standard-Outllok-Item zugewiesen
wird. Danach hat man über das neue Item Zugriff auf alle Eigenschaften und Methoden
des Original-Objekts.
Beispiel:
Public Function SendMail()
Dim outApp As Outlook.Application
Dim outMail As Outlook.MailItem
Dim safMail As SafeMailItem
Set outApp = New Outlook.Application
Set outMail = outApp.CreateItem(olMailItem)
Set safMail = New SafeMailItem
safMail.Item = outMail
With safMail
.Recipients.Add "kristof@zerbit.de"
.Subject = "Test"
.Body = "Dies ist ein Test"
.Send
End With
Set safMail = Nothing
Set outMail = Nothing
Set outApp = Nothing
End Function
Die entscheidenden Unterschiede zum normalen Zugriff auf Outlook-Objekte
sind im Code fett markiert. Es gibt jedoch ein paar Besonderheiten, auf die
man achten sollte. So ist die to-Eigenschaft aus welchem
Grunde auch immer schreibgeschützt. Man muss in diesem Fall mit der
Recipients-Auflistung arbeiten.
Outlook Redemption gibt es in zwei Lizenzvarianten. Die Entwicklerlizenz
ist kostenlos und zeigt lediglich bei der Installation einen Herstellerhinweis.
Die Vollversion kostet hingegen 199 USD, bietet jedoch zudem ProfMan, eine weitere
Bibliothek, mit der man MAPI-Profile manipulieren kann.