0
我正在使用Outlook加载项修改传出邮件并在发送之前添加自定义附件。使用Redemption和它很容易在发送普通邮件时正常工作。发送由Redemption修改的数字签名邮件
问题出现当邮件是由证书数字签署。在这种情况下,会自动附加文件smime.p7s(可将其读作RDOAttachment),添加另一个自定义附件并修改并发送消息。但是,收件人收到的邮件没有这些修改,也没有自定义附件。
发送方法中执行了哪些操作?数据签署时是否有任何保护?有关于如何修改数据并发送附件的解决方案吗?您可能会提出反对意见,认为修改已签署的数据是无稽之谈,但请相信我,我有充分理由这样做。
C#代码示例如下:
void Application_ItemSend(object Item, ref bool Cancel)
{
Outlook.MailItem mailItem = Item as Outlook.MailItem;
if (mailItem != null)
{
mailItem.Save();
if (mailItem.EntryID != "")
{
// get RDOMail
RDOSession rdoSession = new RDOSession();
rdoSession.MAPIOBJECT = Application.Session.MAPIOBJECT;
RDOMail rdoMail = rdoSession.GetMessageFromID(mailItem.EntryID);
// get info about attachments (e.g. smime.p7s)
foreach (RDOAttachment attachment in rdoMail.Attachments)
{
System.Windows.Forms.MessageBox.Show(attachment.FileName);
}
// modify body
rdoMail.HTMLBody = "<html><body>test</body></html>";
// add some custom attachment
byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 };
RDOAttachment att = rdoMail.Attachments.Add(data);
att.FileName = "attachment.bin";
// send modified mail
rdoMail.Save();
rdoMail.Send();
// do not send original message
Cancel = true;
mailItem.GetInspector.Close(Outlook.OlInspectorClose.olDiscard);
}
}
}