MAPI 服務提供者
適用於:Outlook 2013 |Outlook 2016
有三種常見的服務提供者類型:
通訊錄提供者。
訊息存放區提供者。
傳輸提供者。
通訊簿和郵件存放區提供者有許多相似之處。 他們會向MAPI註冊唯一標識碼,用來建構其物件的專案標識碼。 它們提供用戶端可以存取及操作的物件和屬性階層。 針對其容器物件,它們支援階層數據表和內容數據表。 它們支援這些數據表的事件通知,並選擇性地針對個別物件提供通知,以便通知用戶端會話期間發生的變更。 當作業變得冗長時,它們可以顯示進度指示器來通知使用者作業的狀態。 用戶端可以使用 IAddrBook:IMAPIProp 和 IMAPISession:IUnknown 介面,或直接使用下表中的其中一個服務提供者介面,透過MAPI間接與通訊簿和訊息存放區提供者通訊。
通訊錄提供者介面 | 訊息存放區提供者介面 |
---|---|
IABContainer:IMAPIContainer |
IMsgStore:IMAPIProp |
IDistList :IMAPIContainer |
IMAPIFolder:IMAPIContainer |
IMailUser:IMAPIProp |
IMessage:IMAPIProp |
IAttach:IMAPIProp |
傳輸提供者與通訊簿和訊息存放區提供者在與MAPI和客戶端通訊的方式上有所不同。 傳輸提供者通常會等候MAPI提示他們輸入資訊,而不是起始通訊。 不同於其他提供者,傳輸提供者不支援客戶端經常存取的各種物件和數據表。 不過,它們確實支持狀態物件,如同所有服務提供者一樣,並在狀態數據表中發佈其屬性。 雖然通訊簿和訊息存放區提供者會呼叫 IMAPISupport::SetProviderUID 方法來註冊唯一標識碼以建構其專案標識碼,但傳輸提供者會呼叫 IXPLogon::AddressTypes 方法來註冊唯一標識符,以及負責傳遞特定訊息的地址類型。
您的服務提供者應該有三個頭檔:一個公用頭檔和兩個內部檔案。 使用公用頭文件進行組態,以及記錄屬性及其值。 在其中一個內部頭檔中包含所有必要的公用MAPI標頭;此頭檔應包含在您所有的服務提供者來源檔案中。 使用其他內部檔案來定義資源標識碼。
通訊錄、郵件存放區和傳輸提供者會執行下列工作:
提供進入點函式。
提供提供者和登入對象來處理登入和初始化。
如果提供者屬於訊息服務,請提供訊息服務進入點函式。
藉由實作屬性表來支持組態。
實作狀態物件並支援狀態數據表。
處理關機。