MAPILab
EnglishDeutschRussian
Sie sind hier: Home / Kundensupport / FAQ und Artikel / Wie sind Sicherheitseingabeaufforde...

Wie sind Sicherheitseingabeaufforderung in Microsoft® Visual Basic® Programmen für Microsoft® Outlook zu vermeiden

Einleitung für MAPI

Wir beabsichtigen nicht eine komplette Beschreibung der MAPI Architektur oder ihre Anwendungsmomente zu geben (der Benutzer kann diese Information aus vielen anderen Quellen, einschließlich MSDN einholen). Wir konzentrieren uns lieber auf die praktischen Verfahren der MAPI Anwendung, soviel der Inhalt des Artikels erlaubt.

Um die MAPI Merkmale zu entdecken, benutzen wir das ins OutlookSpy ergänzte Probeversion-Programm, zugänglich unter www.dimastr.com. Zusätzliche Einbaueinheit installieren und danach bekommen Sie eine wunderbare Möglichkeit sowohl das Objektmodell als von Outlook und den CDO-Satz zu entdecken.

IMessage Properties

Meldung öffnen; Schaltfläche CurrentItem an der OutlookSpy Werkzeugtafel klicken, dann kommt das _MailItem Objekt, das die Meldung im OOM repräsentiert. Das Merkmal MAPIOBJECT finden, klicken und dann Schaltfläche Browse betätigen — dabei wird das IMessage Interface des entsprechenden MAPI Objekts durch OutlookSpy angezeigt

Mit dem IMessageInterface sind die nachstehenden Verfahren zugänglich:

GetAttachmentTable Zurück zur Zubehörtabelle der Meldung.
OpenAttach Zubehör öffnen.
CreateAttach Neues Zubehör hervorrufen.
DeleteAttach Zubehör entfernen.
GetRecipientTable Zurück zur Empfängerstabelle der Meldung.
ModifyRecipients Empfänger der Meldung hinzufügen, entfernen oder ändern.
SubmitMessage Alle Änderungen in der Meldung werden gespeichert mit Markierung zum Senden.
SetReadFlag Wertzuweisung oder Löschen von MSGFLAG_READ flag im PR_MESSAGE_FLAGSMerkmal und Steuerung beim Senden der abgelesenen Berichte.

Actually, a message is presented to us in MAPI as a table of attachments, a table of recipients, and a set of properties. The list of the object properties can be obtained by invoking IMAPIProp::GetPropList, and the properties themselves through IMAPIProp::GetProps. What we see on the "GetProps" tab of the OutlookSpy is the outcome of the two functions performance.

Let's get a closer look at the PR_SENDER_EMAIL_ADDRESS property which has been already mentioned above. Tag PR_SENDER_EMAIL_ADDRESS corresponds to the hexadecimal &H0C1F001E, where the lower part &H001E is the type of property PT_STRING8, which is a standard ANSI-string. Visual Studio is supplied with files MAPIDEFS.H and MAPITAGS.H, the first containing property type declarations, and the second containing declarations of the properties themselves. The two files are also available in Microsoft Platform SDK.

However, some features cannot be accessed through invoking IMAPIProp::GetProps. Values of such properties as PR_BODY (message body) may be pretty great, so upon invocation of the function error code MAPI_E_NOT_ENOUGH_MEMORY will be returned. To get values of such properties, IMAPIProp::OpenProperty method, which opens a property as a stream (IStream), is used.

Besides, there are some properties that contain values in compressed form, e.g., PR_RTF_COMPRESSED, which contains compressed message body in the RTF format. When such property is being read with IMAPIProp::OpenProperty, the value will be loaded "as is". To get the data in the RTF format, use the MAPI WrapCompressedRTFStream function to read the stream.

Well, now we know enough about object properties to get sender address or message body without warnings of the security system. Of course, if we also have learnt how to operate MAPI from Visual Basic.

Visual Basic software developers can access MAPI properties of an object through CDO via the collection Fields. ID field of a Field object is nothing else but MAPI-property tag. With OutlookSpy, having accessed a message through CDO, you can switch to the Script tab and run the following Jscript code:

for (a = 1; a <= Fields.Count; a++) { Debug.Print(a + " " + Fields.Item(a).ID + " " + Fields.Item(a).Name); Debug.Print(Fields.Item(a).Value); Debug.Print("=================================="); }

This code will print all the object properties your saw while exploring the IMessage interface and which could be obtained through IMAPIProp::GetProps. However, execution of this code will result in security system warnings.

Kundensupport
Wünsche und Anregungen
FAQ und Artikel
 
 
Suche auf MAPILab.com:
Abonnieren Sie unser Newsletter:
E-Mail:
Schnelle Links zu MAPILab Software:
Reporting Lösengen
Outlook Add-Ins
Outlook Plugins
Office Addons

Software für SharePoint
Exchange Add-Ons
Groupware Tools
SharePoint Workflow