C# 检索电子邮件服务器软件名

C# 检索电子邮件服务器软件名,c#,outlook-addin,C#,Outlook Addin,我写了一个Outlook(2010+)C#插件,在不同的电子邮件服务器上遇到了一些问题。 由于我找到了每种服务器类型的特定解决方案,我想知道是否有办法获取Outlook帐户指向哪个电子邮件服务器的信息?这将完全足以获得基础电子邮件服务器软件的名称,因为不需要知道版本号 差不多 string serverSoftware = account.server.softwareName; 太好了…不,这些信息根本不会公开-Outlook只知道它需要使用POP3、SMTP或IMAP4访问特定的远程服务

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

差不多

string serverSoftware = account.server.softwareName; 

太好了…

不,这些信息根本不会公开-Outlook只知道它需要使用POP3、SMTP或IMAP4访问特定的远程服务器


你到底想解决什么问题?为什么您需要这样做?

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

对于Outlook 2010及更早版本:

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\{0}\9375CFF0413111d3B88A00104B2A6676 HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows消息传递子系统\Profiles\{0}\9375CFF041311D3B88A00104B2A6676 2013年展望:

HKCU\Software\Microsoft\Office\15.0\Outlook\Profiles\{0}\9375CFF0413111d3B88A00104B2A6676 HKCU\Software\Microsoft\Office\15.0\Outlook\Profiles\{0}\9375CFF041311D3B88A00104B2A6676 必须用Account.Session.CurrentProfileName替换{0}

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

好了,现在有点困难了:

首先根据此列表检查“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帐户将返回“Keriocf”作为服务名称。

我在复制电子邮件时遇到一些特定服务器软件的问题。服务器响应此操作不受支持,因此我必须创建一个新邮件项并手动复制内容和附件。这个解决方法还可以,但我只想在必要的时候做。是否可以以某种方式从Outlook外部检索有关服务器软件的信息?(Windows API或其他什么?)引发错误的代码行是什么?确切的错误消息是什么?这是关于在IMAP4商店中移动邮件的吗?我会在周一检查并给你回信。