如何通过 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
方法。
我尝试使用 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
方法。