我尝试使用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
{
}
}
答案 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。删除方法。