使用属性访问器重新加密邮件项目

问题描述 投票:0回答:1

我需要解密一个邮件项目,将其另存为.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。

最后一点,重新加密不起作用。

c# outlook vsto outlook-addin office-interop
1个回答
0
投票

即使在理论上,Outlook 也无法对邮件进行加密 - 加密/签名的全部目的是确保邮件不被篡改。如果您能做到这一点,则意味着您可以修改消息而不使其签名无效。更重要的是,您需要拥有私有加密密钥来对其进行加密 - 解密只需要公钥。

您可以尝试复制该消息来解密,另存为MSG文件,然后删除。

您还可以尝试使用Redemption(我是它的作者)来访问解密的消息并保存它:创建RDOSession对象的实例,调用

RDOSession.GetRDOObjectFromOutlookObject(mailItem)
/
RDOEncryptedMessage.GetDecryptedMessage
/
RDOMail.SaveAs

© www.soinside.com 2019 - 2024. All rights reserved.