I have an App that uses Aspose.Email on the server side and Microsoft.Office.Interop.Outlook on the client side.
I want to add some named values to my MailMessage (or MapiMessage) so that they can be read in Microsoft.Office.Interop.Outlook.MailItem.ItemProperties. Can anyone help me with this?
I’ve tried several things, but the last server side version is:
MapiMessage mapiMessage = MapiMessage.FromStream(memStream);
long ltag = mapimessage.NamedPropertyMapping.GetNextAvailablePropertyId(MapiPropertyType.PT_UNICODE);
MapiProperty stringProp = new MapiProperty(ltag, Encoding.Unicode.GetBytes("testPropValue"));
mapimessage.AddCustomProperty(stringProp , "testProp");
And on the client side I want to read the values like this:
Outlook.MailItem mi = (Outlook.MailItem)Item;
string test = mi.ItemProperties["testProp"];
EDIT (OutlookSpy):
When I use OutlookSpy, the only reference to "testProp" appears in the property with tag "0x80CB UserProperties" of type "PT_BINARY" and on the Symbol field:
Version: 0x0103
FieldDefinitionCount : 1 (0x00000001)
FieldDefinitions[0]
Flags: 0x0000002D = PDO_IS_CUSTOM | PDO_PRINT_SAVEAS | PDO_CALC_AUTO | PDO_FT_SWITCH
VT: 0x0008 = VT_BSTR
DispId : 0 (0x00000000)
NmidNameLength : 8 (0x0008)
NmidName: testProp
NameANSI:
PackedAnsiString.Length: 8 (0x08)
PackedAnsiString.Characters: testProp
FormulaANSI:
PackedAnsiString.Length: 0 (0x00)
PackedAnsiString.Characters:
ValidationRuleANSI:
PackedAnsiString.Length: 0 (0x00)
PackedAnsiString.Characters:
ValidationTextANSI:
PackedAnsiString.Length: 0 (0x00)
PackedAnsiString.Characters:
ErrorANSI:
PackedAnsiString.Length: 0 (0x00)
PackedAnsiString.Characters:
InternalType: 0x00000000 = iTypeFormula
SkipBlocks[0]
Size: 17 (0x00000011)
Contents:
PackedUnicodeString.Length: 8 (0x08)
PackedUnicodeString.Characters: testProp
SkipBlocks[1]
Size: 0 (0x00000000)
If a property is set on an item on the MAPI level (where all the properties are stored in Outlook), it can be accessed using MailItem.PropertyAccessor.GetProperty. To figure out the DASL property name (to be used in GetProperty) and to check if the property is really there, take a look at the message with OutlookSpy (click IMessage button).
User contributions licensed under CC BY-SA 3.0