【发布时间】:2014-10-24 03:43:20
【问题描述】:
我正在尝试编写一个打开 Outlook 自定义邮件项并填写多个用户属性的 C# 应用程序。我可以通过使用 Microsoft Outlook 互操作来做到这一点。但是每次尝试更改某些用户属性时,我都会收到烦人的安全警告。我发现 Redemption 是避免这种情况的完美工具。但是当我尝试更改用户属性时,Redemption 会创建一个新属性,而不是使用已经存在的属性。
这是我使用 Outlook Interop 更改属性的代码(弹出安全警告):
string customPropertyNamespace = "http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/";
Outlook._Items oItems = oPublicFolder.Folders["Babillards"].Folders["SYSOTI"].Folders["MEP"].Items;
Outlook._MailItem oMep = oItems.Add("ipm.note.mep");
oMep.PropertyAccessor.SetProperty(customPropertyNamespace + "prop1", "SomeText");
oMep.Display(false);
这一切都很好,除了安全警告......
这是我尝试使用的兑换码:
string customPropertyGUID = "{00020329-0000-0000-C000-000000000046}";
Outlook._Items oItems = oPublicFolder.Folders["Babillards"].Folders["SYSOTI"].Folders["MEP"].Items;
Outlook._MailItem oMep = oItems.Add("ipm.note.mep");
Redemption.SafeMailItem Mep = new Redemption.SafeMailItem();
Mep.Item = oMep;
Mep.set_Fields(Mep.GetIDsFromNames(customPropertyGUID, "prop1"), "SomeText");
oMep.Display(false);
据我了解,这应该可行。但相反,我的邮件页面打开时我的所有字段都为空。通过使用 OutlookSpy,我发现 Redemption 使用此 DASL 创建了一个新属性:
http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/prop1/0x0000001F
而不是:
http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/prop1
有人可以帮助我吗?我也尝试使用 Redemption.MAPIUtils 但我最终得到了完全相同的结果。有没有办法通过传递 DASL 而不是 GUID 和 ID 来更改用户属性?
【问题讨论】:
标签: c# outlook outlook-redemption