共用方式為


開啟訊息存放區

適用於:Outlook 2013 |Outlook 2016

視配置檔而定,客戶端必須在一般會話期間開啟一或多個訊息存放區。 開啟訊息存放區表示可存取其 IMsgStore 的指標:IMAPIProp 實作。 IMsgStore 介面提供通知、進行資料夾指派,以及存取資料夾和訊息的方法。

用戶端會在登入時和配置檔遭到修改時開啟訊息存放區。 如果您的用戶端允許使用者在使用中的工作階段期間將訊息存放區新增至配置檔,您可以立即開啟它們,或忽略它們,直到下一個會話為止。 藉由在訊息存放區數據表上註冊通知,您將會收到新訊息存放區的可用性警示。

若要開啟訊息存放區,您必須有其專案標識碼可供使用。 大部分的客戶端都會存取想要透過訊息存放區數據表開啟之訊息存放區的專案標識碼。 不過,某些訊息存放區會記錄其專案標識碼的格式,因此可讓用戶端略過訊息存放區數據表,並建構必要的專案標識符。 他們可以將此專案標識碼直接傳遞至 IMAPISession::OpenMsgStore ,而 MAPI 會自動為提供者建立配置檔區段,而不需要將它與任何訊息服務產生關聯。

從訊息存放區數據表擷取專案標識碼

  1. 呼叫 IMAPISession::GetMsgStoresTable 以開啟訊息存放區數據表。

  2. 呼叫 IMAPITable::SetColumns ,將數據表限制為包含下列數據行的小型數據行集:

    • PR_PROVIDER_DISPLAYPR_DISPLAY_NAME
    • PR_ENTRYID 屬性
    • PR_MDB_PROVIDER
    • PR_RESOURCE_FLAGS
  3. 建置限制以篩選出代表要開啟之訊息存放區的數據列。 如需尋找預設訊息存放區的詳細資訊,請參閱 開啟預設訊息存放區。 若要依名稱尋找訊息存放區,請套用下列任何屬性限制:

    • PR_PROVIDER_DISPLAY (PidTagProviderDisplay) 與此類型訊息存放區的一般名稱進行比對。 例如,PR_PROVIDER_DISPLAY可能會設定為 「個人資料夾」。

    • 對 PR_MDB_PROVIDER (PidTagStoreProvider) 與此類型訊息存放區的特定 MAPIUID

    • 對 PR_DISPLAY_NAME (PidTagDisplayName) 與此特定訊息存放區的名稱。 例如, PR_DISPLAY_NAME 可能會設定為 「My Messages for Fiscal Year 2010」。

  4. 呼叫 HrQueryAllRows 以從訊息存放區數據表擷取適當的數據列。 數據列的專案識別碼會包含在pprows參數所指向之數據列集的 aRow 成員的屬性值陣列中。

  5. 呼叫 FreeProws 以釋放 pprows 所指向的數據列集。

  6. 藉由呼叫其 IUnknown::Release 方法來釋放訊息存放區數據表。

如果您已建立要開啟之訊息存放區的自定義專案標識符,請呼叫 WrapStoreEntryID 函式,將它轉換成標準專案標識碼。

在您擁有訊息存放區的專案標識符之後,請呼叫下列其中一種方法加以開啟:

如果您需要為訊息存放區指定各種特殊選項,請呼叫 OpenMsgStoreOpenMsgStore 可讓您隱藏對話框的顯示、將訊息存放區識別為暫存或非儲存區、設定存取層級,以及延遲錯誤。 OpenEntry 只允許您設定存取層級和延遲錯誤。

設定MDB_NO_MAIL旗標會向MAPI指出訊息存放區將不會用於傳送或接收訊息。 MAPI 不會通知MAPI多任務緩衝處理程式此訊息存放區是否存在。 MDB_TEMPORARY旗標會將訊息存放區指定為暫存,表示它無法用來儲存永久資訊。 暫時訊息存放區不會出現在訊息存放區數據表中。

另請參閱