Расширенное свойство не соответствует EmailMessage - PullRequest
0 голосов
/ 31 марта 2019

Я выполняю код, который ищет добавить расширенное свойство вместе со значением.Кажется, работает нормально.Когда я перебираю MailItems, я не вижу никаких свидетельств расширенного свойства.

Код для расширения:

EmailMessage email2 = EmailMessage.Bind(service, result.Items[0].Id);
Guid MyPropertySetId = new Guid("{C11FF724-AA03-4555-9952- 
8FA248A11C3E}");
ExtendedPropertyDefinition extendedPropertyDefinition = new 
ExtendedPropertyDefinition(MyPropertySetId, "ServiceCat", 
MapiPropertyType.String);
email2.SetExtendedProperty(extendedPropertyDefinition, "Level2 big daddy");
email2.Update(ConflictResolutionMode.AlwaysOverwrite);

Код для чтения расширенного свойства:

   foreach (Item item in result.Items)
        {
            Console.WriteLine(item.Subject);
            if (item.ExtendedProperties.Count > 0)
            {
                // Display the name and value of the extended property.
                foreach (ExtendedProperty extendedProperty in item.ExtendedProperties)
                {
                    Console.WriteLine(" Extended Property Name: " + extendedProperty.PropertyDefinition.Name);
                    Console.WriteLine(" Extended Property Value: " + extendedProperty.Value);
                }
            }
        }

Я попытался переподключиться, чтобы просмотреть итерации по электронной почте, чтобы увидеть, есть ли расширенное свойство, но длина массива остается 0. Т.е. foreach никогда не запускается.

Я предполагаю, что расширенная preoprty сохраняется при обмене "email2.Обновление (ConflictResolutionMode.AlwaysOverwrite) "и должно быть в состоянии прочитать обратно

Любой совет приветствуется.

1 Ответ

1 голос
/ 01 апреля 2019

Вам нужно загрузить расширенное свойство, используя набор свойств, прежде чем вы сможете перечислить его в сообщении, например,

        PropertySet psPropSet = new PropertySet();
        psPropSet.Add(extendedPropertyDefinition );
        ItemView itemView = new ItemView(1000);
        itemView.PropertySet = psPropSet;

Затем вы можете просто использовать TryGetProperty, чтобы получить расширенный свойство, если установлено

...