2

Redemption.dll を使用して、C# で set_Filed() と get_field() を使用してメッセージにカスタム プロパティを設定しています。メッセージを送信する瞬間まで、すべてが完全に機能します。Outlook から RDOMail.Send() を使用すると、メッセージが下書きフォルダーに送信されます。次に、Redemption FAQ を読み、IMessage::Submit() メソッド (.NET の dll のどこにも見つからなかった) を使用し、DeliverNow() を使用する必要があることを読みました。メッセージを受信すると、設定したプロパティが失われます。Outlook がメールを送信できなければ意味がないので、これは私たちのプロジェクトにとって非常に重要です。

これが私のコードの一部です。

 private void adxOutlookEvents_ItemSend(object sender, AddinExpress.MSO.ADXOlItemSendEventArgs e)
 {
     try
     {
         RDOSessionClass _RDOSession= MessagesActions.GetRDOSession();
         Outlook.MailItem _MailItem= e.Item as Outlook.MailItem;
         RDOMail _RdoMail = MessagesActions.GetRDOMail(_RDOSession, _MailItem);
         _RdoMail.Send();                // Send using Redeption
         e.Cancel = true;                // Only send using Redeption

         if (_RdoMail != null && Marshal.IsComObject(_RdoMail))
             Marshal.ReleaseComObject(_RdoMail);

         Redemption.MAPIUtils _MAPIUtils = new MAPIUtils();
         _MAPIUtils.DeliverNow(0, 0);
         if (_MAPIUtils != null && Marshal.IsComObject(_MAPIUtils))
             Marshal.ReleaseComObject(_MAPIUtils);

         CurrentInspector.Close(Outlook.OlInspectorClose.olDiscard);
     }
     catch
     {
     }
}     

ありがとう。

4

1 に答える 1

0

メッセージが SMTP 経由で送信されると (同じドメイン内の 2 つの Exchange メールボックス間とは異なり)、メッセージは MIME に変換され、すべての MAPI 固有のプロパティが失われます。

UseTnef という名前の特別なプロパティを使用すると、Outlook に強制的に TNEF (悪名高い winmail.dat) 形式でメッセージを送信させることができます。

RDOMail.Fields[" http://schemas.microsoft.com/mapi/id/ {00062008-0000-0000-C000-000000000046}/8582000B"] = true;

于 2013-05-26T05:09:26.377 に答える