我需要解密一个邮件项目,将其另存为.msg,然后重新加密,这样原始邮件似乎没有改变。
OUTLOOK VSTO 添加 C#
// Decrypt the mail item
const string PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003";
Outlook.PropertyAccessor propertyAccessor = mailItem.PropertyAccessor;
propertyAccessor.SetProperty(PR_SECURITY_FLAGS, 0x00000000); // Decrypt the mail item
mailItem.Save();
// Save the decrypted mail item
mailItem.SaveAs(filePathWithName);
// Re-encrypt the mail item
propertyAccessor.SetProperty(PR_SECURITY_FLAGS, 0x00000001); // Encrypt the mail item
mailItem.Save();
此代码解密 smime 加密的电子邮件并将其另存为 .msg。
最后一点,重新加密不起作用。
即使在理论上,Outlook 也无法对邮件进行加密 - 加密/签名的全部目的是确保邮件不被篡改。如果您能做到这一点,则意味着您可以修改消息而不使其签名无效。更重要的是,您需要拥有私有加密密钥来对其进行加密 - 解密只需要公钥。
您可以尝试复制该消息来解密,另存为MSG文件,然后删除。
您还可以尝试使用Redemption(我是它的作者)来访问解密的消息并保存它:创建RDOSession对象的实例,调用
RDOSession.GetRDOObjectFromOutlookObject(mailItem)
/ RDOEncryptedMessage.GetDecryptedMessage
/ RDOMail.SaveAs
。