2010-10-20 86 views
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 
    { 
    } 
}  

谢谢。

回答

0

当通过SMTP发送邮件(与同一域中的两个Exchange邮箱不同)时,邮件将转换为MIME,并且所有MAPI特定属性都将丢失。

您可以强制Outlook如果哟USET一个特殊命名的属性称为UseTnef发送的TNEF格式消息(臭名昭著的winmail.dat):

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

相关问题