Работя в Visual Studio 2012, за да създам сравнително проста добавка за Outlook 2010. Машините са Win 7 Enterprise 32 и 64. Целта на добавката е да дешифрира имейл съобщения директно във входящата кутия на потребителя, така че те да могат да се търси лесно в .pst архиви или да се записват в мрежови папки като .msg файлове нешифровани. Имейлите са криптирани с помощта на x.509 PKI с частни ключове, съхранени на смарт карта, която подканва потребителя да въведе ПИН всеки път, когато се отвори криптиран имейл. Ето какво имам досега:
private void buttonDecrypt_Click(object sender, RibbonControlEventArgs e) {
currentExplorer = Globals.ThisAddIn.Application.ActiveExplorer();
if (currentExplorer.Selection.Count > 0) {
for (int i = 0; i < currentExplorer.Selection.Count; i++) {
Object selObject = currentExplorer.Selection[i+1];
if (selObject is Microsoft.Office.Interop.Outlook.MailItem) {
Microsoft.Office.Interop.Outlook.MailItem mailItem =
(selObject as Microsoft.Office.Interop.Outlook.MailItem);
mailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x6E010003", 0);
mailItem.Save();
}
}
}
}
Ако ръчно отворя шифрован имейл в Outlook, получавам подкана за моя ПИН, който позволява имейлът да се отвори добре. След това, ако затворя имейла и натисна новия си бутон на лентата, той прави точно това, което искам, като повторно запазва имейла нешифрован директно във входящата ми кутия. Въпреки това, ако избера повече от един имейл наведнъж или не отворя първо съобщението ръчно, моят код грешки на mailItem.PropertyAccessor.Setproperty()
със съобщение COMException was unhandled by user code: Your Digital ID name cannot be found by the underlying security system.
Това ми казва, че имам нужда от начин да попитам потребителя за неговия ПИН, преди да се опитам да отворя електронна поща.
can be easily searched in .pst archives
е в противоречие сprompts the user for a PIN each time an encrypted email is opened
- person Peter M   schedule 19.12.2014