原始出處:www.cnblogs.com/Charltsing/p/OutlookAddinsTips.html
聯系QQ:564955427
從去年到現在,寫了四五個Outlook插件,其中兩個是給CRM系統配套使用的,代碼經過兩三次迭代,目前基本結構相對比較穩定,所以簡單說說,做個總結。
開發環境
1、不要使用VSTO開發Outlook插件,除非你是在企業內部使用,有專門的IT管理員可以確保每台電腦安裝環境的統一。否則5%的電腦部署不上。
2、推薦使用Com Addins或者一些第三方開源或者商業框架開發Outlook。
3、如果需要操作MAPI或者更底層的東西,推薦使用Redemption庫(收費)。
4、C#開發Outlook插件依賴Com對象,這會給開發帶來一些限制。
關於Outlook
1、不要相信Outlook里面提供的事件會像想象的那樣工作,你只有親自測試,才會知道這里面有多大的坑。(例如郵件到達事件和同步事件)
2、時刻記住Outlook對郵件的各種操作都是異步的,理解這一點,你才會知道為什么某些代碼工作起來不太對勁。
3、Outlook的Ribbon回調與Office其他的程序不同,可以根據不同的界面加載不同的xml,所以它支持動態更新菜單。
4、Outlook的窗格需要包裝再調用創建,具體參考MSDN;修改Forms也請參考MSDN。
5、Outlook的自定義字段是有bug的,反復修改保存會導致Outlook提示郵件被占用,需要等候一段時間重試或重啟Outlook。這個問題從2013的某個更新之后開始出現,到Office365依然存在。
6、Outlook對插件的啟動和退出要求比較嚴格,對占用事件較長的插件都會禁用,因此如果你想在插件啟動的時候做初始化,建議使用子線程,同時注意跨線程操作Outlook的UI問題。
7、從Outlook 2010開始,默認情況下,Outlook不會調用IDTExtensibility2接口的OnBeginShutdown和OnDisconnection,這是為了確保Outlook可以快速關閉。如果要改變這個默認設置,需要增加插件的注冊表設置。
8、在加載項管理器里面去掉勾選再勾上和Outlook啟動時加載插件的行為不一致,注意CTPFactoryAvailable的執行順序。
9、小心處理內存泄漏問題。
下面是我開發的Outlook插件基本功能演示界面