我編寫了一個Outlook(2010+)C#加載項,並在使用不同的電子郵件服務器時遇到了一些麻煩。 當我發現每種服務器類型的具體解決方案時,我想知道是否有辦法獲取Outlook帳戶指向哪些電子郵件服務器的信息?只需要知道底層電子郵件服務器軟件的名稱就足夠了,因爲不需要知道版本號。正在檢索電子郵件服務器軟件名
喜歡的東西
string serverSoftware = account.server.softwareName;
將是巨大的......
我編寫了一個Outlook(2010+)C#加載項,並在使用不同的電子郵件服務器時遇到了一些麻煩。 當我發現每種服務器類型的具體解決方案時,我想知道是否有辦法獲取Outlook帳戶指向哪些電子郵件服務器的信息?只需要知道底層電子郵件服務器軟件的名稱就足夠了,因爲不需要知道版本號。正在檢索電子郵件服務器軟件名
喜歡的東西
string serverSoftware = account.server.softwareName;
將是巨大的......
您可以在註冊表中查找帳戶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」 根據該列表的值:
如果是最後一個clsid,請選中「服務名稱」。對於Exchange帳戶,它將是「MSEMS」,而Kerio Connect帳戶將返回「KERIOOCF」作爲服務名稱。
不,信息完全不暴露 - 所有Outlook知道的是,它需要訪問使用POP3,SMTP特定的遠程服務器或IMAP4。
你試圖解決什麼問題?爲什麼你需要那個?
複製電子郵件時,我遇到了特定服務器軟件的一些問題。服務器響應此操作不受支持,因此我必須創建一個新的mailitem並手動複製內容和附件。這種解決方法是可以的,但我只想在需要時才這樣做。 是否可以從Outlook外部以某種方式檢索有關服務器軟件的信息? (Windows API或其他?) – AlexS
你的代碼行會產生錯誤?什麼是確切的錯誤信息?這是關於在IMAP4商店中移動消息嗎? –
我會在星期一進行檢查並回復。 – AlexS