我尝试在创建时将自定义UserProperty添加到MailItem。
我将一个附件的哈希作为UserProperty添加到我的MailItem对象。 然后我在Outlook中打开我的新MailItem。
mi = olApp.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
Outlook.UserProperties mailUserProperties = null;
Outlook.UserProperty mailUserProperty = null;
mi.Attachments.Add(file.FilePath);
mailUserProperties = mi.UserProperties;
mailUserProperty = mailUserProperties.Add("AttachementsHash", Outlook.OlUserPropertyType.olText);
mailUserProperty.Value = file.Hash;
mi.Save();
mi.Display();
如果我使用OutlookSpy检查MailItem.UserProperties,请在发送之前看到我的邮件有一个UserProperty。
然后我点击"发送邮件"在Outlook中,我在SentItems文件夹中检查我的邮件。 我可以看到UserProperties.Count == 0。
如果有人知道我的UserProperty消失的原因,请帮助我并告诉:)
答案 0 :(得分:3)
我付出了很多努力解决了我的问题。
发送邮件后删除UserProperties。但是我使用了MailItem.PropertyAccessor.SetProperty
来代替UserPropertiesMSDN Documentation of Property Accessor
string prop = "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/PropertyName";
mi.PropertyAccessor.SetProperty(prop, propertyValue.ToString());
然后在'ItemAdd'事件中,我检查了项目是否已添加到sentItems。 如果它被添加到sentItems我使用这样的结构读取属性:
Outlook.MailItem AddedMail = item as Outlook.MailItem;
string attachmentProperty = AddedMail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E");
然后我最后解析字符串以获取我的数据。
我希望它可以帮助任何人:)