Управление на елементи от календар в Outlook

Aspose.Email MapiCalendar класът предоставя методи и атрибути за задаване на различни свойства на календарен елемент. Този раздел предоставя примерен код за:

Създаване и запазване на елементи от календар

Следният кодов фрагмент показва как да създадете и запазите календарен елемент във формат ICS.

Записване на календарни елементи като MSG файлове

Следният кодов фрагмент показва как да запазите календарния елемент като MSG.

Записване на идентификатори на продукти за MAPI календарни елементи в ICS

Този ProductIdentifier свойство на MapiCalendarIcsSaveOptions класът се използва за запазване на MAPI календарен елемент в iCalendar (ICS) файл, запазвайки оригиналната информация за дата и час, както и персонализиран идентификатор на продукта. Свойството указва идентификатора за продукта, който е създал iCalendar обекта.

Следният примерен код показва как да работите с данни от iCalendar (ICS) в MAPI календарен обект:

var icsSaveOptions = new MapiCalendarIcsSaveOptions
{
    KeepOriginalDateTimeStamp = true,
    ProductIdentifier = "Foo Ltd"
};

mapiCalendar.Save("my.ics", icsSaveOptions);

Получаване на общия брой събития

Класът CalendarReader позволява лесно управление на календарни събития. Следните свойства и метод ви позволяват да работите с множество събития:

  • CalendarReader.Count – Свойството Count от класа CalendarReader ви позволява да вземете броя на Vevent компонентите (събития) в календара, което улеснява проследяването на общия брой събития.
  • CalendarReader.IsMultiEvents – Това свойство определя дали календарът съдържа множество събития. То предоставя булева стойност, указваща дали календарът съдържа повече от едно събитие, помагайки за идентифициране на календари с едно или множество събития.
  • CalendarReader.Method – Свойството Method получава типа метод на iCalendar, свързан с календарния обект. То връща типа метод, като например “REQUEST”, “PUBLISH” или “CANCEL”, предоставяйки ценна информация за целта на календара.
  • CalendarReader.Version – Връща версията на iCalendar.
  • CalendarReader.LoadAsMultiple() Този метод позволява зареждането на списък със събития от календар, съдържащ множество събития. Той връща списък от обекти Appointment, позволявайки лесен достъп и обработка на всяко събитие поотделно.

Следният примерен код демонстрира как можете да внедрите тези възможности във вашия проект:

var reader = new CalendarReader(fileName);
Console.WriteLine("Calendar contains " + reader.Count + " events");
Console.WriteLine("The Version of the calendar is " + reader.Version);
Console.WriteLine("The Method of the calendar is " + reader.Method);
Console.WriteLine("Is calendar contains contains multiple events? - " + reader.IsMultiEvents);
List<Appointment> appointments = reader.LoadAsMultiple();

Добавяне на визуални напомняния

Следният фрагмент от код показва как да добавите визуално напомняне към календар.

Добавяне на аудио напомняния

Следният кодов фрагмент показва как да добавите аудио напомняне към календар.

Добавяне/извличане на прикачени файлове от календарни файлове

Следният кодов фрагмент показва как да добавяте/извличате прикачени файлове от календарни файлове.

Проверка на статуса на получателите в заявки за среща

Следният фрагмент от код показва как да покажете статуса на получателите от заявка за среща.

Създаване на MAPI календар TimeZone от стандартна часова зона

Следният фрагмент от код показва как да създадете MapiCalendarTimeZone от стандартна часова зона.

Задаване на напомняния за назначения

Напомняне може да се добави, когато се създава среща. Тези аларми могат да се задействат въз основа на различни критерии, като n минути преди започване на графика, повторение n пъти на интервали от n. Различни тагове могат да се използват за създаване на тези задействания в скрипта, затворен между BEGIN:VALARM и END:VALARM в рамките на среща. Съществуват множество варианти, при които напомнянето може да се зададе за среща.

Добавяне на тагове за задаване на напомняния

Следният кодов фрагмент показва как да зададете напомняне, като добавите тагове.

Конвертиране на Appointment EML към MSG с HTML тяло

От версия 19.3, Aspose.Email предоставя възможност за конвертиране на Appointment EML към MSG, като се запазва HTML тялото на срещата. Aspose.Email предоставя MapiConversionOptions.ForcedRtfBodyForAppointment свойство, което има стойност по подразбиране true. Когато стойността на MapiConversionOptions.ForcedRtfBodyForAppointment е зададено на true, тялото на срещата се конвертира в RTF формат. За да запазите формата на тялото на срещата в HTML, задайте стойността на MapiConversionOptions.ForcedRtfBodyForAppointment на false.

Следният пример демонстрира употребата на MapiConversionOptions.ForcedRtfBodyForAppointment свойство за запазване на формата на тялото на срещата в HTML формат.

Ръчно задаване на състоянието на MAPI календарни елементи

Задайте състоянието на MAPI календарен обект изрично, като надмине стандартното поведение. Това позволява по-добър контрол върху състоянията на календарните събития, особено при обработка на получени заявки за среща. По подразбиране, когато се създаде среща, нейното състояние е MapiCalendarState.Meeting. Когато бъде получено в входящата кутия на получателя, автоматично се променя на MapiCalendarState.Received, а класът на съобщението се актуализира до “IPM.Schedule.Meeting.Request”. Използвайки SetStateForced позволява ръчно задаване на състоянието Received, което може да е полезно за запазване на информация за организатора при записване на календара като MSG файл. Въпреки това, това може да попречи на правилното препращане или повторно изпращане на срещата.

Следният пример с код демонстрира как да се създаде MapiCalendar обект, задайте организатор и изрично задайте състоянието му и на двете Meeting и Received използвайки SetStateForced. След това записва календарния елемент като .msg файл.

MapiCalendar appointment = new MapiCalendar(
    "LAKE ARGYLE WA 6743",
    "Appointment",
    "This is a very important meeting :)",
    new DateTime(2024, 5, 10, 12, 30, 0, DateTimeKind.Utc),
    new DateTime(2024, 5, 10, 13, 30, 0, DateTimeKind.Utc));

appointment.Organizer = new MapiElectronicAddress
{
    EmailAddress = "test@aaa.com",
    DisplayName = "test display Name"
};

appointment.SetStateForced(MapiCalendarState.Meeting | MapiCalendarState.Received);

appointment.Save("appointment.msg", AppointmentSaveFormat.Msg);