Inhalt
ReplyAll | |
Mit diesem Addin für Outlook erhalten Sie in verschiedenen Situationen eine Warnung, bevor Sie auf eine Email versehentlich allen anderen Empfängern antworten. |
Seit Outlook 2000 SP3 (optional) bzw. Outlook XP sind einige Eigenschaften aus Sicherheitsgründen blockiert. Das betrifft z.B. die Absenderadresse einer E-Mail. Seit Outlook 2003 lassen sich in VBA auch die blockierten Eigenschaften lesen, ohne eine Sicherheitswarnung auszulösen, indem alles vom schon vorhandenen Application-Objekt abgeleitet wird. Schon vorhanden heiÃt, in VBA gibt es bereits eine Variable namens Application, über die auf alle weiteren Objekte und deren Eigenschaften zugegriffen werden kann. Diese Variable braucht nicht erst erstellt zu werden. Und genau hier liegt häufig der Fehler, das betrifft übrigens auch die offizielle VBA-Hilfe: Es wird über die Funktionen GetObject oder CreateObject ein Verweis auf Application erzeugt, statt einfach die vorhandene Variable zu verwenden. Die folgenden Beispiele demonstrieren den Unterschied. Um die Beispiele zu testen, muss es mindestens eine E-Mail im Posteingang geben.
Das erste Beispiel zeigt, wie es nicht geht. Statt einfach mit Application zu arbeiten, wird mit der Funktion GetObject die Variable olApp auf das Application-Objekt gesetzt. Die Folge: Beim Versuch, die Absenderadresse einer Mail zu lesen, kommt die Sicherheitsmeldung.
Public Sub Warning() Dim olApp As Outlook.Application Dim Inbox As Outlook.MAPIFolder Dim Mail As Outlook.MailItem Set olApp = GetObject(, "Outlook.Application") Set Inbox = olApp.Session.GetDefaultFolder(olFolderInbox) Set Mail = Inbox.Items(1) MsgBox Mail.SenderEmailAddress End Sub
So verhindern Sie die Sicherheitsmeldung ganz einfach: Die Variable olApp wird direkt auf die Application-Eigenschaft gesetzt, ohne den Umweg über die GetObject-Funktion. Hiermit wird auch deutlich, dass Sie von auÃen, also z.B. aus Excel heraus, keine Möglichkeit haben, die Sicherheitsmeldung zu umgehen, weil Sie von auÃerhalb Outlooks eigentlich nur über GetObject bzw. CreateObject auf das Outlook.Application-Objekt zugreifen können. (Wie das trotzdem geht, erfahren Sie Sicherheitsmodell, Teil 2.)
Public Sub NoWarning() Dim olApp As Outlook.Application Dim Inbox As Outlook.MAPIFolder Dim Mail As Outlook.MailItem Set olApp = Application Set Inbox = olApp.Session.GetDefaultFolder(olFolderInbox) Set Mail = Inbox.Items(1) MsgBox Mail.SenderEmailAddress End Sub
Category-Manager | |
Mit dem Category-Manager können Sie Outlook Kategorien gruppieren, synchronisieren und filtern, neuen Emails automatisch die Kategorie des Absenders zuweisen und vieles mehr. Das Addin ist auch für IMAP geeignet. |
In Outlook 2003 gibt es noch etwas zu beachten: Der Regel-Assistent übergibt an Skripte die nicht vertrauenswürdige Referenz auf die Email. (Seit Outlook 2007 ist das nicht mehr der Fall.) Das folgende Beispiel löst deswegen eine Sicherheitswarnung aus:
Public Sub Warning(NewMail As Outlook.MailItem) MsgBox NewMail.SenderEmailAddress End Sub
Dieses Beispiel umgeht die Sicherheitsmeldung in Outlook 2003, indem eine neue Variable auf die Email über das Application-Objekt geholt wird. Auf diese Weise kann die Absenderadresse ohne Probleme gelesen werden.
Public Sub NoWarning(NewMail As Outlook.MailItem) Dim Session As Outlook.NameSpace Dim EntryID$, StoreID$ Dim Mail As Outlook.MailItem EntryID = NewMail.EntryID StoreID = NewMail.Parent.StoreID Set Session = Application.Session Set Mail = Session.GetItemFromID(EntryID, StoreID) MsgBox Mail.SenderEmailAddress End Sub
OLKeeper | |
Der OLKeeper verhindert zuverlässig, dass Sie Microsoft Outlook unbeabsichtigt schlieÃen und so etwa wichtige Emails verpassen würden. |