2013-11-28 65 views
0

我編寫了一個Outlook(2010+)C#加載項,並在使用不同的電子郵件服務器時遇到了一些麻煩。 當我發現每種服務器類型的具體解決方案時,我想知道是否有辦法獲取Outlook帳戶指向哪些電子郵件服務器的信息?只需要知道底層電子郵件服務器軟件的名稱就足夠了,因爲不需要知道版本號。正在檢索電子郵件服務器軟件名

喜歡的東西

string serverSoftware = account.server.softwareName; 

將是巨大的......

回答

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

必須更換的{0} Account.Session.CurrentProfileName

在這個位置迭代所有子帳號並查找「帳戶名稱」,以便與帳戶匹配。顯示名稱

好吧,現在它變得有點難度:

首先檢查 「CLSID」 根據該列表的值:

  • {ED475411-B0D6-11D2-8C3B-00104B2A6676} =的POP3
  • { ED475412-B0D6-11D2-8C3B-00104B2A6676} = IMAP
  • {ED475415-B0D6-11D2-8C3B-00104B2A6676} =活動同步(展望2013)
  • {ED475414-B0D6-11D2-8C3B-00104B2A6676} = Exchange和其他類似MAPI的第三方

如果是最後一個clsid,請選中「服務名稱」。對於Exchange帳戶,它將是「MSEMS」,而Kerio Connect帳戶將返回「KERIOOCF」作爲服務名稱。

0

不,信息完全不暴露 - 所有Outlook知道的是,它需要訪問使用POP3,SMTP特定的遠程服務器或IMAP4。

你試圖解決什麼問題?爲什麼你需要那個?

+0

複製電子郵件時,我遇到了特定服務器軟件的一些問題。服務器響應此操作不受支持,因此我必須創建一個新的mailitem並手動複製內容和附件。這種解決方法是可以的,但我只想在需要時才這樣做。 是否可以從Outlook外部以某種方式檢索有關服務器軟件的信息? (Windows API或其他?) – AlexS

+0

你的代碼行會產生錯誤?什麼是確切的錯誤信息?這是關於在IMAP4商店中移動消息嗎? –

+0

我會在星期一進行檢查並回復。 – AlexS

相關問題