2010-07-28 29 views
1

背景: 我正在開發一個Outlook外掛程序,它將附件添加到外發電子郵件中。所有版本的Outlook都需要支持。如何檢測Outlook是否默認數字簽名電子郵件?

當使用數字簽名對MailItem進行簽名時,除非保存郵件項目,否則向該郵件項目添加附件通常會失敗。這將從mailitem中刪除簽名。對我而言,這是有些預期的行爲。這裏沒什麼奇怪的。

問題出在用戶打開數字簽名時(無論是通過UI還是Outlook默認行爲),然後再次將其關閉。 MailItem不再簽名,但仍然表現得如同 - 我們無法將附件添加到此電子郵件中。

我發現了一個可能解釋原因的新聞組帖子;看來通過outlook API檢索的對象不是實際的對象。

http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.messaging/2006-02/msg00000.html

目前,我已經放棄了試圖很好地解決這個問題;將MailItem保存到臨時文件似乎可以解決此問題,但出於性能方面的原因,我們只希望在MailItem從已簽名轉換爲未簽名時保存。另一個可接受的選擇是檢測數字簽名是否默認啓用。雖然有一個與數字簽名的默認設置相關的註冊表項,但這僅僅是一個建議,並不能準確反映電子郵件是否默認簽名。

任何想法?

回答

0

原來,您可以在C++中使用EMAPI來調用IMessagePtr-> SaveChanges(),這似乎很好地工作。不幸的是,你不能在C#中訪問它。

1

您可以使用redemption api library從C#中調用該方法。

也有你試圖從擴展MAPI dll創建一個PInvoke簽名?

+0

從贖回電話實際上並沒有工作,這是令人驚訝的。 PInvoke是一個好主意;但是我們已經有了一個C++包裝器,所以不妨在這裏叫它:) – MauriceL 2010-08-05 08:41:55

相關問題