2014-09-12 1 views
0

보내는 메시지를 수정하고 보내는 바로 전에 사용자 지정 첨부 파일을 추가하는 Outlook 추가 기능에서 작업하고 있습니다. 환불 및 교환 일반 우편 보낼 때 그것은 아주 잘 작동합니다.보너스로 수정 된 디지털 서명 된 메일 보내기

메시지가에 인증서로 디지털 서명 된 경우 이 표시됩니다. 이 경우 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); 
     } 
    } 
} 

답변

0

Outlook을 정기적으로는 MailItem 개체로 서명/암호화 된 메시지를 나타냅니다. 모든 변경 사항은 해당 오브젝트에 작성되어야합니다.

실제 (MAPI 수준에서) 메시지에 대한 변경 사항은 무시됩니다.

rdoSession.GetMessageFromID를 사용하는 대신 rdoSession.GetRDOObjectFromOutlookObject를 사용해보십시오.