Trabalhando com Itens de Calendário em Arquivo PST
Adicionando MapiCalendar ao PST
Criar Novo PST, Adicionar Subpastas e Mensagens mostrou como criar um arquivo PST e adicionar uma subpasta a ele. Com Aspose.Email, você pode adicionar MapiCalendar à subpasta Calendário de um arquivo PST que você criou ou carregou.
Abaixo estão os passos para adicionar MapiCalendar a um PST:
- Crie um objeto MapiCalendar.
- Defina as propriedades do MapiCalendar usando um construtor e métodos.
- Crie um PST usando o método PersonalStorage.create().
- Crie uma pasta predefinida (Calendário) na raiz do arquivo PST acessando a pasta raiz e, em seguida, chamando o método addMapiMessageItem().
O trecho de código abaixo mostra como criar um MapiCalendar e, em seguida, adicioná-lo à pasta Calendário de um arquivo PST recém-criado.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, 2016); | |
cal.set(Calendar.MONTH, Calendar.JANUARY); | |
cal.set(Calendar.DAY_OF_MONTH, 1); | |
Date startDate = cal.getTime(); | |
cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, 2016); | |
cal.set(Calendar.MONTH, Calendar.FEBRUARY); | |
cal.set(Calendar.DAY_OF_MONTH, 1); | |
Date endDate = cal.getTime(); | |
// Create the appointment | |
MapiCalendar appointment = new MapiCalendar("LAKE ARGYLE WA 6743", "Appointment", "This is a very important meeting.", startDate, endDate); | |
// Create the meeting | |
MapiRecipientCollection attendees = new MapiRecipientCollection(); | |
attendees.add("ReneeAJones@armyspy.com", "Renee A. Jones", MapiRecipientType.MAPI_TO); | |
attendees.add("SzllsyLiza@dayrep.com", "Szollosy Liza", MapiRecipientType.MAPI_TO); | |
MapiCalendar meeting = new MapiCalendar("Meeting Room 3 at Office Headquarters", "Meeting", "Please confirm your availability.", startDate, | |
endDate, "CharlieKhan@dayrep.com", attendees); | |
PersonalStorage pst = PersonalStorage.create(dataDir + "MapiCalendarToPST_out.pst", FileFormatVersion.Unicode); | |
FolderInfo calendarFolder = pst.createPredefinedFolder("Calendar", StandardIpmFolder.Appointments); | |
calendarFolder.addMapiMessageItem(appointment); | |
calendarFolder.addMapiMessageItem(meeting); |
Salvar Itens de Calendário do Outlook PST em Disco no formato ICS
Este artigo mostra como acessar itens de calendário de um arquivo PST do Outlook e salvar o calendário em disco no formato ICS. Ele usa as classes PersonalStorage e MapiCalendar para obter as informações do calendário.
Abaixo estão os passos para salvar os itens do calendário:
- Carregue o arquivo PST na classe PersonalStorage.
- Navegue até a pasta Calendário.
- Obtenha o conteúdo da pasta Calendário para obter a coleção de mensagens.
- Percorra a coleção de mensagens.
- Chame o método PersonalStorage.extractMessage() para obter as informações de contato na classe MapiCalendar.
- Chame o método MapiCalendar.save() para salvar o item do 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. Os arquivos ICS podem ser usados em qualquer outro programa que pode carregar o arquivo de calendário ICS padrão. Se você abrir qualquer arquivo ICS no Microsoft Outlook, ele parecerá com o da captura de tela abaixo.
![]() |
||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Figura: Item de calendário salvo com Aspose.Email | ||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Extrair Itens de Calendário de um Arquivo PST
A classe MapiCalendar representa um item de calendário no formato MAPI do Microsoft Outlook. Extraia uma mensagem de um arquivo PST e converta-a em um item de mensagem MAPI. O seguinte exemplo de código extrai um item de calendário de um arquivo PST e o converte em um objeto MapiCalendar para manipulação ou processamento adicional:
MapiCalendar cal = (MapiCalendar) pst.extractMessage(messageInfo).toMapiMessageItem();
Salvar Itens de Calendário no formato ICS com Timestamp Original
Use o exemplo de código acima para extrair um item de calendário de um arquivo PST e, em seguida, especifique opções adicionais para salvá-lo como ICS com timestamp original usando o método setKeepOriginalDateTimeStamp da classe MapiCalendarIcsSaveOptions:
MapiCalendar cal = (MapiCalendar) pst.extractMessage(messageInfo).toMapiMessageItem();
if (cal != null) {
MapiCalendarIcsSaveOptions so = new MapiCalendarIcsSaveOptions();
so.setKeepOriginalDateTimeStamp(true);
cal.save("cal.ics", so);
}
Modificar/Deletar Ocorrências de Recorrências
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
Date startDate = addHours(new Date(), 12); | |
MapiCalendarEventRecurrence recurrence = new MapiCalendarEventRecurrence(); | |
recurrence.setRecurrencePattern(new MapiCalendarDailyRecurrencePattern()); | |
MapiCalendarRecurrencePattern pattern = recurrence.getRecurrencePattern(); | |
pattern.setPatternType(MapiCalendarRecurrencePatternType.Day); | |
pattern.setPeriod(1); | |
pattern.setEndType(MapiCalendarRecurrenceEndType.NeverEnd); | |
Date exceptionDate = addDays(startDate, 1); | |
// adding one exception | |
MapiCalendarExceptionInfo exceptionInfo = new MapiCalendarExceptionInfo(); | |
exceptionInfo.setLocation("London"); | |
exceptionInfo.setSubject("Subj"); | |
exceptionInfo.setOriginalStartDate(exceptionDate); | |
exceptionInfo.setStartDateTime(exceptionDate); | |
exceptionInfo.setEndDateTime(addHours(exceptionDate, 5)); | |
pattern.getExceptions().addItem(exceptionInfo); | |
pattern.getModifiedInstanceDates().addItem(exceptionDate); | |
// every modified instance also has to have an entry in the DeletedInstanceDates field with the original instance date. | |
pattern.getDeletedInstanceDates().addItem(exceptionDate); | |
// adding one deleted instance | |
pattern.getDeletedInstanceDates().addItem(addHours(exceptionDate, 2)); | |
MapiRecipientCollection recColl = new MapiRecipientCollection(); | |
recColl.add("recepient@gmail.com", "R1", MapiRecipientType.MAPI_TO); | |
MapiCalendar newCal = new MapiCalendar( | |
"This is Location", | |
"This is Summary", | |
"This is recurrence test", | |
startDate, | |
addHours(startDate, 3), | |
"organizer@domain.com", | |
recColl); | |
newCal.setRecurrence(recurrence); | |
ByteArrayOutputStream memory = new ByteArrayOutputStream(); | |
try { | |
PersonalStorage pst = PersonalStorage.create(memory, FileFormatVersion.Unicode); | |
FolderInfo calendarFolder = pst.createPredefinedFolder("Calendar", StandardIpmFolder.Appointments); | |
calendarFolder.addMapiMessageItem(newCal); | |
} | |
finally { | |
memory.close(); | |
} |