Gerenciando itens de calendário do Outlook

Aspose.Email MapiCalendar A classe fornece métodos e atributos para definir várias propriedades de um item de calendário. Esta seção oferece exemplos de código para:

Criar e salvar itens de calendário

O trecho de código a seguir mostra como criar e salvar um item de calendário no formato ICS.

Salvar Itens de Calendário como Arquivos MSG

O trecho de código a seguir mostra como salvar o item de calendário como MSG.

Salvar IDs de Produto para Itens de Calendário MAPI em ICS

O ProductIdentifier propriedade do MapiCalendarIcsSaveOptions classe é usada para salvar um item de calendário MAPI em um arquivo iCalendar (ICS) preservando as informações originais de data e hora, bem como um identificador de produto personalizado. A propriedade especifica o identificador do produto que criou o objeto iCalendar.

O exemplo de código a seguir mostra como trabalhar com dados iCalendar (ICS) dentro de um objeto de calendário MAPI:

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

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

Obter Número Total de Eventos

A classe CalendarReader permite lidar com eventos de calendário sem esforço. As propriedades e o método a seguir permitem trabalhar com múltiplos eventos:

  • CalendarReader.Count - A propriedade Count da classe CalendarReader permite recuperar o número de componentes Vevent (eventos) presentes no calendário, facilitando o acompanhamento do número total de eventos.
  • CalendarReader.IsMultiEvents - Esta propriedade determina se o calendário contém múltiplos eventos. Ela fornece um valor booleano indicando se o calendário contém mais de um evento, auxiliando na identificação de calendários com um único ou múltiplos eventos.
  • CalendarReader.Method - A propriedade Method obtém o tipo de método iCalendar associado ao objeto de calendário. Ela retorna o tipo de método, como “REQUEST”, “PUBLISH” ou “CANCEL”, fornecendo informações valiosas sobre o propósito do calendário.
  • CalendarReader.Version - Obtém a Versão do iCalendar.
  • CalendarReader.LoadAsMultiple() Este método permite o carregamento de uma lista de eventos de um calendário que contém múltiplos eventos. Ele retorna uma lista de objetos Appointment, possibilitando acesso fácil e processamento individual de cada evento.

O exemplo de código a seguir demonstra como você pode implementar esses recursos em seu projeto:

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();

Adicionar Lembretes de Exibição

O trecho de código a seguir mostra como adicionar um lembrete de exibição a um calendário.

Adicionar Lembretes de Áudio

O trecho de código a seguir mostra como adicionar um lembrete de áudio a um calendário.

Adicionar/Recuperar Anexos de Arquivos de Calendário

O trecho de código a seguir mostra como adicionar/recuperar anexos de arquivos de calendário.

Verificar Status dos Destinatários em Convites de Reunião

O trecho de código a seguir mostra como exibir o status dos destinatários de um convite de reunião.

Criar Fuso Horário de Calendário MAPI a partir de Fuso Horário Padrão

O trecho de código a seguir mostra como criar MapiCalendarTimeZone a partir de fuso horário padrão.

Definir Lembretes para Compromissos

Um lembrete pode ser adicionado quando um compromisso é criado. Esses alarmes podem ser acionados com base em diferentes critérios, como n minutos antes do início da programação, repetir n vezes em intervalos de n. Tags diferentes podem ser usadas para criar esses gatilhos no script encerrado por BEGIN:VALARM e END:VALARM dentro de um compromisso. Existem várias variantes em que o lembrete pode ser configurado em um compromisso.

Adicionar Etiquetas para Definir Lembretes

O trecho de código a seguir mostra como definir um lembrete adicionando tags.

Converter Appointment EML para MSG com corpo HTML

Desde a versão 19.3, Aspose.Email oferece a capacidade de converter Appointment EML para MSG mantendo o corpo HTML do compromisso. Aspose.Email fornece um MapiConversionOptions.ForcedRtfBodyForAppointment propriedade que tem um valor padrão de true. Quando o valor de MapiConversionOptions.ForcedRtfBodyForAppointment é definido como true, o corpo do compromisso é convertido para o formato RTF. Para manter o formato do corpo do compromisso em HTML, defina o valor de MapiConversionOptions.ForcedRtfBodyForAppointment para false.

O exemplo a seguir demonstra o uso de MapiConversionOptions.ForcedRtfBodyForAppointment propriedade para manter o formato do corpo do compromisso em HTML.

Definir o Estado de Itens de Calendário MAPI Manualmente

Defina explicitamente o estado de um objeto MAPI Calendar, sobrescrevendo o comportamento padrão. Isso permite melhor controle sobre os estados de eventos de calendário, particularmente ao lidar com solicitações de reunião recebidas. Por padrão, quando uma reunião é criada, seu estado é MapiCalendarState.Meeting. Quando recebido na caixa de entrada do destinatário, ele muda automaticamente para MapiCalendarState.Received, e sua classe de mensagem é atualizada para “IPM.Schedule.Meeting.Request”. Usando SetStateForced permite definir manualmente o estado como Received, o que pode ser útil para preservar informações do organizador ao salvar o calendário como um arquivo MSG. No entanto, isso pode impedir o encaminhamento ou reenvio adequado da reunião.

O exemplo de código abaixo demonstra como criar um MapiCalendar objeto, atribua um organizador e defina explicitamente seu estado como ambos Meeting e Received usando SetStateForced. Em seguida, salva o item de calendário como um arquivo .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);