如何通过 C# 删除电子邮件帐户(在工具->帐户设置->电子邮件中添加的帐户)

How to delete an email account ( one added in Tools->Account Settings -> Email) through C#

我尝试使用 Outlook Namesapce 的 Remove Store 方法删除与电子邮件帐户相关联的根文件夹,但它抛出一个错误,指出它与电子邮件帐户相关联。那么如何从 C# 中删除在 Outlook 中添加的电子邮件帐户?

 private void RemovePersonalFoldersStore(Outlook._Application OutlookApp)
    {
        Outlook.NameSpace ns = null;
        Outlook.Folders rootFolders = null;
        Outlook.MAPIFolder folder = null;
        String acc = "";
        try
        {
            ns = OutlookApp.GetNamespace("MAPI");
            rootFolders = ns.Folders;
            foreach (Outlook.Account a in ns.Stores.Session.Accounts)
            {
                acc = a.DisplayName;
            }

            for (int i = 1; i <= rootFolders.Count; i++)
            {
                folder = rootFolders[i];
                if (folder != null)
                {
                    if (!folder.Name.Equals(OutlookApp.Session.DefaultStore.DisplayName))
                    {

                        ns.RemoveStore(folder);

                    }

                    folder = null;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {

        }
    }

Outlook 对象模型不提供任何 属性 或删除邮件帐户的方法。相反,您可以使用低级 API - Extended MAPI(或围绕该 API 的任何其他第三方包装器)。要删除帐户,您需要使用示例代码 IOlkAccountManager::DeleteAccount method. See Using Account Management API (IOlkAccountManger) to List Outlook Email Accounts

您可能还会发现 IProfAdmin::DeleteProfile 删除配置文件的方法很有用。如果调用 DeleteProfile 时要删除的配置文件正在使用中,DeleteProfile returns S_OK 但不会立即删除配置文件。相反,DeleteProfile 将配置文件标记为删除,并在其所有活动会话结束后不再使用后将其删除。有关详细信息,请参阅 IProfAdmin 界面。

您可以在 MAPI Application: How to programmatically remove Hotmail accounts from existing MAPI profiles 文章中找到示例代码。

Namespace.RemoveStore 删除 PST 帐户。如果您需要删除邮件(而不是商店)帐户,则需要使用 IOlkAccountManager.DeleteAccount Extended MAPI method (C++ or Delphi). In case of C#, you can use Redemption (I am its author - it wraps Extended MAPI) and its RDOAccount.Delete 方法。