检索电子邮件服务器软件名称

时间:2013-11-28 14:22:59

标签: c# outlook-addin

我写了一个Outlook(2010+)C#插件,并且在使用不同的电子邮件服务器时遇到了一些问题。 当我找到每种服务器类型的特定解决方案时,我想知道是否有办法获取Outlook帐户指向哪个电子邮件服务器的信息?获取底层电子邮件服务器软件的名称是完全足够的,因为不需要知道版本号。

这样的东西
string serverSoftware = account.server.softwareName; 

会很棒......

2 个答案:

答案 0 :(得分:2)

您可以在注册表中查找帐户clsid或服务名称。

对于Outlook 2010及更早版本:

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\{0}\9375CFF0413111d3B88A00104B2A6676

对于Outlook 2013:

HKCU\Software\Microsoft\Office\15.0\Outlook\Profiles\{0}\9375CFF0413111d3B88A00104B2A6676

您必须使用Account.Session.CurrentProfileName

替换{0}

在此位置迭代所有子项并查找“Account Name”,它将与Account.DisplayName匹配

好的,现在它变得更加困难了:

首先根据此列表检查“clsid”的值:

  • {ED475411-B0D6-11D2-8C3B-00104B2A6676} = Pop3
  • {ED475412-B0D6-11D2-8C3B-00104B2A6676} = IMAP
  • {ED475415-B0D6-11D2-8C3B-00104B2A6676} =有效同步(Outlook 2013)
  • {ED475414-B0D6-11D2-8C3B-00104B2A6676} = Exchange和其他类似MAPI的第三方

如果是最后一个clsid,请选中“服务名称”。对于Exchange帐户,它将是“MSEMS”,而Kerio Connect帐户将返回“KERIOOCF”作为服务名称。

答案 1 :(得分:0)

不,该信息根本不公开 - 所有Outlook都知道它需要使用POP3,SMTP或IMAP4访问特定的远程服务器。

你究竟要解决什么问题?为什么你需要这个?