Я создаю TaskRequestItem через .NET Outlook Interop API и добавляю свой собственный UserProperty. (Я использую уже запущенный экземпляр Outlook) В конце я отображаю элемент в Outlook, и 1-й процесс завершен.
В моем Outlook работает надстройка VSTO, которая прослушивает событие ItemSend. Если теперь я отправляю TaskRequestItem в Outlook, я не могу найти в Event ItemSend на элементе какие-либо UserProperties!
Я также пытался использовать ItemProperties и PropertyAccessor. Та же проблема, все свойства исчезли!
Если я попробую это с MailItem, то это сработает!
Сначала добавляются свойства, потому что я могу прочитать их сразу после добавления в 1-йшаг ...
Часть 1 для создания нового элемента с интерфейсом API:
Microsoft.Office.Interop.Outlook.Application outlook = Marshal.GetActiveObject("Outlook.Application") as OutlookApplication;
...
TaskItem item = outlook.CreateItem(OlItemType.olTaskItem);
var task = item.Assign();
var guid = Guid.NewGuid().ToString();
var userProperty = item.UserProperties.Add("My GUID", OlUserPropertyType.olText, true);
userProperty.Value = guid;
task.Save();
task.Display();
...
Часть 2 ItemSend в VSTO Addin
private void MyAddIn_ItemSend(object item, ref bool cancel)
...
var oItm = item as TaskRequestItem;
foreach (UserProperty property in oItm.UserProperties)
{
if (property.Name == "My GUID")
{
Console.WriteLine("My GUID: " + property.Value);
}
}