Gerenciando Itens de Calendário em Arquivos PST

Adicionar Eventos de Calendário a Arquivos PST

Criar Novo Arquivo PST e Adicionar Subpastas Demonstrou como criar um arquivo PST e incluir subpastas nele. Com Aspose.Email, você também pode adicionar um MapiCalendar à subpasta Calendário de um arquivo PST existente ou recém‑criado. Abaixo estão os passos para adicionar um MapiCalendar a um arquivo PST:

  1. Crie um MapiCalendar objeto.
  2. Defina as propriedades do MapiCalendar usando um construtor e métodos.
  3. Criar um PST usando o PersonalStorage.create() método.
  4. Crie uma pasta predefinida (Calendário) na raiz do arquivo PST acessando a pasta raiz e então chamando o método add_mapi_message_item().

O trecho de código a seguir mostra como criar um MapiCalendar e então adicioná-lo à pasta de calendário de um arquivo PST recém-criado:

Salvar Itens de Calendário do Outlook como Arquivos ICS

Este artigo explica como acessar itens de calendário de um PST do Outlook e salvá‑los em disco no formato ICS. Você precisará usar o PersonalStorage e MapiCalendar classes para recuperar os dados de calendário. Siga estes passos para salvar itens de calendário:

  1. Carregue o arquivo PST usando o PersonalStorage classe.
  2. Navegue até a pasta Calendário.
  3. Recupere a coleção de mensagens da pasta Calendário.
  4. Iterar pela coleção de mensagens.
  5. Use o PersonalStorage.extract_message() método para obter informações de contato no MapiCalendar classe.
  6. Use o MapiCalendar.save() método para salvar cada item de calendário em disco no formato ICS.

O programa abaixo carrega um arquivo PST do disco e salva todos os itens de calendário no formato ICS. Esses arquivos ICS podem então ser usados em qualquer outro programa que suporte arquivos de calendário padrão ICS. Quando aberto no Microsoft Outlook, um arquivo ICS aparece como mostrado na captura de tela abaixo.

todo:image_alt_text

O trecho de código a seguir demonstra como exportar itens de calendário de um PST do Outlook para o formato ICS:

Salvar Arquivos ICS com Carimbos de Tempo Originais

O método keep_original_date_time_stamp da MapiCalendarIcsSaveOptions classe permite preservar as marcas de data e hora originais dos itens de calendário ao salvá‑los como um arquivo ICS (iCalendar). O exemplo de código a seguir demonstra a implementação deste método:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

calendar_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.APPOINTMENTS)

for msg_info in calendar_folder.enumerate_messages():
    cal = pst.extract_message(msg_info).to_mapi_message_item()

    save_options = ae.mapi.MapiCalendarIcsSaveOptions()
    save_options.keep_original_date_time_stamp = True

    if not (cal is None):
      cal.save("cal.ics", save_options)

Modificar ou Excluir Ocorrências de Recorrência em Arquivos PST

Você pode adicionar exceções a padrões de recorrência existentes ou excluir ocorrências específicas em arquivos PST usando a API Aspose.Email for .NET. O exemplo de código a seguir demonstra como fazer tais modificações:

from datetime import datetime, timedelta
from aspose.email.storage.pst import PersonalStorage, StandardIpmFolder, FileFormatVersion
from aspose.email.mapi import MapiCalendar, MapiCalendarEventRecurrence, \
    MapiCalendarDailyRecurrencePattern, MapiCalendarRecurrenceEndType, \
    MapiCalendarExceptionInfo, MapiCalendarRecurrencePatternType, \
    MapiRecipientCollection, MapiRecipientType

start_date = datetime.now().date()

recurrence = MapiCalendarEventRecurrence()
pattern = MapiCalendarDailyRecurrencePattern()
pattern.pattern_type = MapiCalendarRecurrencePatternType.DAY
pattern.period = 1
pattern.end_type = MapiCalendarRecurrenceEndType.NEVER_END
recurrence.recurrence_pattern = pattern

exception_date = start_date + timedelta(days=1)

# adding one exception
exception_info = MapiCalendarExceptionInfo()
exception_info.location = "London"
exception_info.subject = "Subj"
exception_info.original_start_date = exception_date
exception_info.start_date_time = exception_date
exception_info.end_date_time = exception_date + timedelta(hours=5)
pattern.exceptions.append(exception_info)
pattern.modified_instance_dates.append(exception_date)
# every modified instance also has to have an entry in the DeletedInstanceDates field with the original instance date.
pattern.deleted_instance_dates.append(exception_date)

# adding one deleted instance
pattern.deleted_instance_dates.append(exception_date + timedelta(days=2))

rec_coll = MapiRecipientCollection()
rec_coll.add("receiver@domain.com", "receiver", MapiRecipientType.TO)
new_cal = MapiCalendar(
    "This is Location",
    "This is Summary",
    "This is recurrence test",
    start_date,
    start_date + timedelta(hours=3),
    "organizer@domain.com",
    rec_coll
)
new_cal.recurrence = recurrence

with PersonalStorage.create("output.pst", FileFormatVersion.UNICODE) as pst:
    calendar_folder = pst.create_predefined_folder("Calendar", StandardIpmFolder.APPOINTMENTS)
    calendar_folder.add_message(new_cal)