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

时间:2015-05-28 12:06:51

标签: c# outlook

我尝试使用Outlook Namesapce的删除存储方法删除与电子邮件帐户关联的根文件夹,但它会抛出一条错误消息,说明它与电子邮件帐户相关联。那么如何从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
        {

        }
    }

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

Namespace.RemoveStore删除PST帐户。如果需要删除邮件(而不是商店)帐户,则需要使用IOlkAccountManager.DeleteAccount扩展MAPI方法(C ++或Delphi)。如果是C#,您可以使用Redemption及其RDOAccount。删除方法。