Поделиться через


Сохранение свойств автоматического архивирования папки в хранилище решения

В этом разделе показано решение, которое сохраняет свои личные данные в нескольких свойствах автоматического архивирования MAPI. Решение сохраняет эти свойства в объекте StorageItem папки, к которой применяются свойства автоматического архивирования. Объекты StorageItem хранятся в виде скрытых данных в связанной части папки, а так как решения могут при необходимости шифровать свои данные, они обеспечивают конфиденциальность, требуемую для данных решения. Так как свойства автоматического архивирования MAPI не предоставляются как явные встроенные свойства в объектной модели Outlook, решение использует PropertyAccessor в объекте StorageItem для задания этих свойств.

Ниже показана процедура.

  1. Функция ChangeAgingProperties принимает в качестве входных параметров следующее:
  • oFolder — это объект Folder , к которому применяются свойства старения и где хранятся их значения.

  • AgeFolder указывает, следует ли архивировать или удалять элементы в указанной папке.

  • DeleteItems указывает, следует ли удалять вместо архива элементы, которые старше периода старения.

  • FileName ' указывает конкретный файл для архивации устаревших элементов. Если это пустая строка, будет использоваться архивный файл по умолчанию archive.pst.

  • Granularity указывает единицу времени для старения, независимо от того, будет ли архивирование вычисляться в единицах месяцев, недель или дней.

  • Period указывает время в заданной степени детализации. Granularity Вместе значения и Period указывают период старения. Элементы в указанной папке старше этого периода выдержки должны архивироваться или удаляться, как указано. Например, Granularity значения 2 и Period 14 указывают период старения в 14 дней, когда элементы в указанной папке старше 14 дней должны быть либо архивироваться, либо удаляться, как указано.

  • Default Указывает, для каких параметров следует задать значение по умолчанию. Возможные значения: 0, 1 и 3:

    • 0 указывает, что ни в чем не предполагается значение по умолчанию.

    • 1 указывает, что только расположение файла принимает значение по умолчанию. Это то же самое, что установить флажок Заархивировать эту папку с помощью этих параметров и Переместить старые элементы в архивную папку по умолчанию на вкладке Автоархивация диалогового окна Свойства папки.

    • 3 указывает, что все параметры предполагают значение по умолчанию. Это аналогично проверке архивных элементов в этой папке с помощью параметров по умолчанию на вкладке Автоархивация диалогового окна Свойства папки.

  1. Проверяется допустимость параметров.

  2. Если параметры допустимы, folder.GetStorage используется для создания или получения существующего объекта StorageItem с классом сообщения , IPC.MS. Outlook.AgingProperties.

  3. Затем PropertyAccessor используется для задания свойств автоматического архивирования в StorageItem, StorageItem.Save используется для сохранения изменений в StorageItem.

  4. Процедура TestAgingProps задает параметры автоматического архивирования для свойств устаревания текущей папки, чтобы элементы старше шести месяцев перемещались в архивный файл по умолчанию.

Замечания

  1. Поместите код во встроенный модуль ThisOutlookSession .

  2. Выполните процедуру TestAgingProps , чтобы задать свойства старения в текущей папке в активном проводнике.

Примечание Независимо от того, реализовано ли оно как макрос VBA или надстройка COM, решение является доверенным вызывающим и, следовательно, может получить доступ к PropertyAccessor. Чтобы улучшить этот пример, заключите следующий код VBA в класс .NET для улучшения перехвата ошибок и перечисления для детализации.

Function ChangeAgingProperties(oFolder As Outlook.Folder, _ 
 AgeFolder As Boolean, DeleteItems As Boolean, _ 
 FileName As String, Granularity As Integer, _ 
 Period As Integer, Default As Integer) As Boolean 
 
 '6 MAPI properties for aging items in a folder 
 Const PR_AGING_AGE_FOLDER = _ 
 "https://schemas.microsoft.com/mapi/proptag/0x6857000B" 
 Const PR_AGING_DELETE_ITEMS = _ 
 "https://schemas.microsoft.com/mapi/proptag/0x6855000B" 
 Const PR_AGING_FILE_NAME_AFTER9 = _ 
 "https://schemas.microsoft.com/mapi/proptag/0x6859001E" 
 Const PR_AGING_GRANULARITY = _ 
 "https://schemas.microsoft.com/mapi/proptag/0x36EE0003" 
 Const PR_AGING_PERIOD = _ 
 "https://schemas.microsoft.com/mapi/proptag/0x36EC0003" 
 Const PR_AGING_DEFAULT = _ 
 "https://schemas.microsoft.com/mapi/proptag/0x685E0003" 
 
 Dim oStorage As StorageItem 
 Dim oPA As PropertyAccessor 
 
 ' Valid Period: 
 ' 1-999 
 ' 
 ' Valid Granularity: 
 ' 0=Months, 1=Weeks, 2=Days 
 ' 
 ' Valid Default: 
 ' 0=All settings don't use a default setting 
 ' 1=Only the file location is defaulted 
 ' "Archive this folder using these settings" and 
 ' "Move old items to default archive folder" are checked 
 ' 3=All settings are defaulted 
 ' "Archive items in this folder using default settings" is checked 
 
 If (oFolder Is Nothing) Or _ 
 (Granularity < 0 Or Granularity > 2) Or _ 
 (Period < 1 Or Period > 999) Or _ 
 (Default < 0 Or Default = 2 Or Default > 3) _ 
 Then 
 ChangeAgingProperties = False 
 End If 
 
 On Error GoTo Aging_ErrTrap 
 
 'Create or get solution storage in given folder by message class 
 Set oStorage = oFolder.GetStorage( _ 
 "IPC.MS.Outlook.AgingProperties", olIdentifyByMessageClass) 
 Set oPA = oStorage.PropertyAccessor 
 
 If Not (AgeFolder) Then 
 oPA.SetProperty PR_AGING_AGE_FOLDER, False 
 Else 
 'Set the 6 aging properties in the solution storage 
 oPA.SetProperty PR_AGING_AGE_FOLDER, True 
 oPA.SetProperty PR_AGING_GRANULARITY, Granularity 
 oPA.SetProperty PR_AGING_DELETE_ITEMS, DeleteItems 
 oPA.SetProperty PR_AGING_PERIOD, Period 
 If FileName <> "" Then 
 oPA.SetProperty PR_AGING_FILE_NAME_AFTER9, FileName 
 End If 
 oPA.SetProperty (PR_AGING_DEFAULT), Default 
 End If 
 'Save changes as hidden messages to the associated portion of the folder 
 oStorage.Save 
 ChangeAgingProperties = True 
 Exit Function 
 
Aging_ErrTrap: 
 Debug.Print Err.Number, Err.Description 
 ChangeAgingProperties = False 
End Function 
 
Sub TestAgingProps() 
 Dim oFolder As Outlook.Folder 
 Set oFolder = Application.ActiveExplorer.CurrentFolder 
 If ChangeAgingProperties(oFolder, True, False, "", 0, 6, 1) Then 
 Debug.Print "ChangeAgingProperties OK" 
 Else 
 Debug.Print "ChangeAgingProperties Failed" 
 End If 
End Sub

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.