Этот ответ был переписан после экспериментов с Outlook.
Мой C # достаточно хорош, чтобы я знал, что вы делаете, но я еще не пытался получить доступ к Outlook из C #.
И Items
, и Item
используются в модели Outlook. Я не знаю, что вы можете использовать item
так, как вы пытаетесь.
UserProperties выдает ошибку, если пользовательское свойство "test" не существует. Ниже я покажу, как проверить на существование. Вы добавляете свойство пользователя и забыли сохранить измененный почтовый элемент?
Ниже показан доступ к свойствам пользователя из Outlook VBA. Я ожидаю, что модель InterOp будет настолько похожа, насколько позволяет синтаксис. Важные отличия, о которых я знаю:
Set
не требуется с C #.
Nothing
является эквивалентом VBA null
.
Переменные:
- FolderItem - это элемент в папке, который был протестирован на класс olMail.
- UserProp имеет тип UserProperty.
- InxUP имеет тип integer.
Следующее добавляет пользовательское свойство с именем «TestProp» и типом olText, устанавливает его значение «Value for TestProp» и сохраняет исправленный почтовый элемент. Без сохранения предыдущие операторы не действуют.
With FolderItem
Set UserProp = .UserProperties.Add("TestProp", olText)
UserProp.Value = "Value for TestProp"
.Save
End with
Следующие данные выводят в непосредственное окно имя и значение каждого пользовательского свойства для элемента почты.
For InxUP = 1 To .UserProperties.Count
Debug.Print " User prop " & InxUP & _
.UserProperties(InxUP).Name & " " & _
.UserProperties(InxUP).Value
Next
Следующее проверяет, существует ли пользовательское свойство "TestProp", и, если это так, выводит его значение в непосредственное окно.
Set UserProp = .UserProperties.Find("TestProp")
If Not UserProp Is Nothing Then
Debug.Print " TestProp " & .UserProperties("TestProp").Value
End If
Надеюсь, это поможет