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 回答