簡體   English   中英

Outlook插件如何檢測帳戶何時被刪除

[英]How can Outlook addin detect when an account is removed

我從 Outlook 獲得帳戶,如下所示。

    Outlook.NameSpace ns = null;
    Outlook.Accounts accounts = null;
    Outlook.Account account = null;
    string accountList = string.Empty;

    try
    {
        ns = OutlookApp.Session;
        accounts = ns.Accounts;
        for (int i = 1; i <= accounts.Count; i++)
        {
            account = accounts[i];
            accountList += String.Format("{0} - {1}{2}", 
                account.UserName,  
                account.SmtpAddress, 
                Environment.NewLine);
            if (account != null)
                Marshal.ReleaseComObject(account);
        }
        MessageBox.Show(accountList);
    }
    finally
    {
        if (accounts != null)
            Marshal.ReleaseComObject(accounts);
        if (ns != null)
            Marshal.ReleaseComObject(ns);
    }

但是,Outlook 會返回帳戶,包括已刪除的帳戶。
刪除帳戶時似乎沒有發生任何事件。

賬戶被移除后,有沒有辦法獲取被移除賬戶以外的賬戶? 如何獲取不包括已刪除帳戶的帳戶?

Outlook object model 沒有為此提供任何事件。 您可以做的最好的事情是處理Stores.BeforeStoreRemove事件,該事件在即將從當前Store中以編程方式或通過用戶操作刪除時觸發。 以下是 MSDN 對該事件的說明:


Outlook 必須運行才能觸發此事件。 當發生以下任何情況時,將觸發此事件:

  • 用戶通過單擊快捷菜單上的Close命令來刪除商店。

  • 通過調用Namespace.RemoveStore以編程方式刪除存儲。

當發生以下任何情況時,此事件不會觸發:

  • 當 Outlook 關閉並關閉主存儲或委托存儲時。

  • 如果通過 Microsoft Windows 控制面板中的郵件小程序刪除了商店,並且 Outlook 未運行。

  • Microsoft Exchange Server 對話框的高級選項卡上刪除了委托存儲。

  • 當 Outlook 未運行時,將通過帳戶管理器對話框的數據文件選項卡刪除存儲。

  • 從配置文件中刪除 IMAP 存儲。

您可以使用此事件來確定商店已被刪除,並在您的應用程序需要該商店時采取適當的措施(例如重新安裝該商店)。 否則,您將不得不求助於輪詢 Stores 集合。

在 MAPI 級別(C++ 或 Delphi),帳戶事件是通過IOlkAccountManager::Advise方法實現的。 您可以在OutlookSpy中看到事件觸發(單擊 IOlkAccountManager 按鈕,go 到 Advise 選項卡)。

Outlook Object Model 不公開這些事件。 如果使用Redemption是一個選項,它會通過RDOAccounts object - AccountChange, AccountAdd, AccountRemove, AccountBeforeRemove, AccountOrderChange公開所有帳戶事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM