2016-12-07 3 views
0

Есть ли способ сохранить свойства пользователя для календарей приглашений/мест назначения?C# Outlook Назначение Пользовательские свойства - Не сохраняются через календари/приглашения

Я создал область формы для встреч с некоторыми дополнительными полями формы. После события записи о назначении я могу сохранить данные области формы в качестве свойств пользователя по сравнению с назначением. С точки зрения отправителей эти свойства сохраняются, когда предмет открыт и может быть обновлен и т. Д.

Тем не менее, любые приглашенные на встречу или любые конференц-залы/места могут получить встречу, НО пользователь свойства, похоже, не переносятся с элементом. Почему это, и можно ли это работать?

Единственный, о котором я мог думать, - это также сохранить свойства пользователя в базе данных и загрузить их при открытии элемента с помощью метода FormRegion_Showing. Это не идеальное решение, поскольку цель заключалась в том, чтобы сохранить все в мировоззрении.

Я использую Outlook 2010 и Visual Studio 2015.

я наткнулся на this post, которые в значительной степени говорит, что это не может быть сделано, однако, что это с 2011 года, и я не могу найти ничего более недавнее, релевантную к этому конкретному сценарию.

Некоторые сократить код - форма Регион:

// Form region class 
[Microsoft.Office.Tools.Outlook.FormRegionMessageClass(Microsoft.Office.Tools.Outlook.FormRegionMessageClassAttribute.Appointment)] 
[Microsoft.Office.Tools.Outlook.FormRegionName("Namespace.MyFormRegion")] 
public partial class MyFormRegionFactory 
{ 

} 

private void MyFormRegion_FormRegionShowing(object sender, System.EventArgs e) 
{ 
    Outlook.AppointmentItem appointment = this.OutlookItem as Outlook.AppointmentItem; 
    this.appointment.Write += Appointment_Write; 
} 

private void Appointment_Write(ref bool Cancel) 
{ 
    Outlook.ItemProperties CateringData = this.appointment.ItemProperties; 
    var Serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 

    Outlook.ItemProperty MeetingNameProperty = CateringData.Add("MeetingName", Outlook.OlUserPropertyType.olText, true); 
    MeetingNameProperty.Value = this.MeetingName.Text; 

    // More properties saved 
    appointment.Save(); 
} 

и в классе надстройку:

public partial class ThisAddIn 
{ 
    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     Application.ItemSend += Application_ItemSend; 
    } 

    private void Application_ItemSend(object Appointment, ref bool Cancel) 
    { 
     // Appointment is an AppointmentItem that has just been saved. 
     // How does this relate to the outgoing item that ends up in the 
     // Sent Items folder??? 
    } 
} 

с программой Outlook Spy свойства пользователь не в элементе в Отправленные. Область формы появляется при открытии элемента из одного из календарей приглашенных, но свойств пользователя там нет.

+0

Вы отправляете между двумя почтовыми ящиками Exchange? Или через SMTP? –

+0

Приглашенные пользователи являются внутренними, так что через один и тот же сервер обмена, я думаю. –

+0

Прочитав немного с момента публикации этого вопроса, похоже, что установка ExtendedProperty на элементе с использованием EWS может быть способом сделать это? Предположительно, это было бы что-то вроде того, как привязать свойства к элементу после вызова AppointmentItem.Save в надстройке? –

ответ

1

Итак, после многократных царапин и модификаций головы и после использования Outlook Spy с помощью Dmitry (http://www.dimastr.com/outspy/home.htm) для проверки свойств пользователя Я понял, что пытался установить имя свойства, которое уже использовалось через Outlook внутренне (MeetingType)

После изменения имени этого свойства все остальные пользовательские свойства теперь сохраняются как в отправленных, так и в календаре приглашенных.

Для всех, кто сталкивается с этой проблемой, где свойства не сохраняются, проверьте свои имена свойств с теми, которые установлены в Outlook уже, могут сэкономить часы головной боли!

 Смежные вопросы

  • Нет связанных вопросов^_^