我正在使用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 :(得分: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;