2016-08-01 66 views
0

我有一個目前正在開發中的outlook插件,它從outlook讀取郵件屬性並顯示在winform上。Outlook 365 vs Professional [保存mailitem]編碼問題

我在2013年展望專業環境中構建了前景。所有功能都很好。諸如發件人名稱,發件人等等的屬性可讀地顯示在一個winform上。

這是我如何訪問郵件的屬性。現在

Outlook.MailItem mail; 
mail.Sender.Name; 

,如果我參加了插件上使用相同的系統區域設置,但不同的Outlook(如Outlook 365)的環境

想讀一些特定的郵件時,我遇到解碼的問題。因此,舉例來說,如果我訪問郵件從發送:阿黛爾

Outlook.MailItem mail; 
mail.Sender.Name; // ---> This returns Ad?le 

郵件卻當我與outlook spy查了UTF-8編碼。 PC語言環境相同。

一個奇怪的是,我從Outlook 365環境郵件複製到另一個(Outlook專業),並有問題,但是當我複製郵件並從Outlook專業環境導入Outlook 365,它的工作原理正確。所以我認爲這與Outlook 365保存或表示它的對象的方式有關?我如何解決這個問題?它是否可以解決我的問題?

+0

你能檢查你的Outlook安裝的確切版本號嗎?請確保您在*選項>高級>國際選項*中設置相同的設置(我假設您已經確保您可以在兩個系統上訪問來自同一發件人的相同郵件) –

+0

@DirkVollmar將介紹我的發現2moro當我在該系統,謝謝:) – Undisputed007

回答

0

Outlook對象模型(就像所有IDispatch友好的COM庫)以UTF-16(2字節)編碼返回字符串。

確保以不會將字符串轉換爲單字節編碼的方式顯示字符串。

您是否在OutlookSpy中看到同樣的問題?

+0

outlook spy正確顯示數據:)它有什麼不同?除了如上所述直接訪問mailitem對象屬性之外,是否需要執行任何轉換或其他步驟?謝謝 – Undisputed007

+0

您需要顯示您的代碼,從您讀取屬性的那一刻開始顯示。 MessageBox.Show(mail.Sender.Name)顯示什麼? –