Расширенное свойство, не привязанное к EmailMessage

#c# #exchangewebservices #extended-properties

#c# #exchangewebservices #расширенные свойства

Вопрос:

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

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

 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 никогда не запускается.

Я предполагаю, что расширенная предварительная запись сохраняется в exchange «email2.Update(ConflictResolutionMode.AlwaysOverwrite)» и должно иметь возможность считываться обратно

Приветствуются любые советы.

Ответ №1:

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

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

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

Комментарии:

1. Спасибо, теперь я вижу, как это свойство проходит. Я хочу добавить расширенные свойства к почтовым элементам многих групповых почтовых ящиков. На более позднем этапе я хотел бы добавить значения к свойству. Могу ли я использовать один и тот же GUID для добавления расширенного свойства ко всем почтовым ящикам?

2. Или я могу использовать :

3. Вы должны использовать один и тот же идентификатор GUID, не начинайте создавать множество случайных расширенных свойств, все, что вам нужно, это одно, иначе у вас возникнет проблема с исчерпанием расширенного свойства. Вам нужно определить одно для того, что вы пытаетесь сделать, и оно будет работать на столько почтовых ящиков, сколько вам нужно.