Gerenciando itens de calendário do Outlook
O MapiCalendar A classe na biblioteca Aspose.Email oferece vários métodos e atributos para configurar e manipular itens de calendário. Isso permite um gerenciamento eficaz dos itens de calendário do Outlook, aumentando a produtividade e a organização. Abaixo estão as seções que o guiarão pelos diferentes aspectos do gerenciamento de itens de calendário.
Criando e Salvando Itens de Calendário
Criar e salvar itens de calendário
O trecho de código a seguir demonstra como criar e salvar um item de calendário no formato ICS:
- Defina o caminho onde o seu arquivo de calendário será armazenado.
- Crie um compromisso inicializando um novo MapiCalendar objeto com detalhes específicos como local, assunto, descrição, horário de início e término.
- Salve a consulta criada como um arquivo ICS no diretório especificado.
import aspose.email as ae
from datetime import datetime
data_dir = "path/to/data/directory"
# Create the appointment
calendar = ae.mapi.MapiCalendar(
"LAKE ARGYLE WA 6743",
"Appointment",
"This is a very important meeting :)",
datetime(2012, 4, 1),
datetime(2012, 5, 1))
calendar.save(data_dir + "CalendarItem_out.ics", ae.calendar.AppointmentSaveFormat.ICS)
Salvar itens de calendário como MSG
O trecho de código a seguir mostra como salvar o item de calendário como MSG:
Definir ID do Produto para Conversão de MapiCalendar para ICS
A biblioteca Aspose.Email permite salvar um MapiCalendar (um item de calendário) em um arquivo ICS (iCalendar) com opções específicas. O seguinte propriedades permitirá que você retenha as marcas de data e hora originais associadas ao item de calendário e defina o identificador do produto no arquivo ICS, por exemplo para "Foo Ltd", respectivamente:
- ics_save_options.keep_original_date_time_stamp
- ics_save_options.product_identifier
O identificador do produto é um campo que identifica o software ou serviço que gerou o arquivo ICS.
Aqui está um exemplo de código que permite definir um ID de produto ao salvar MapiCalendar para ICS:
import aspose.email as ae
from datetime import datetime
mapi_calendar = ae.mapi.MapiCalendar(
"LAKE ARGYLE WA 6743",
"Appointment",
"This is a very important meeting :)",
datetime(2024, 4, 1),
datetime(2024, 4, 2))
ics_save_options = ae.mapi.MapiCalendarIcsSaveOptions()
ics_save_options.keep_original_date_time_stamp = True
ics_save_options.product_identifier = "Foo Ltd"
mapi_calendar.save("my.ics", ics_save_options)
Contar total de eventos de calendário
O CalendarReader A classe fornece funcionalidade para ler e analisar dados de calendário de um arquivo designado. Ao inicializar um objeto CalendarReader, você pode extrair detalhes importantes como o número total de eventos, a versão do calendário, o método empregado e se o calendário inclui múltiplos eventos. Abaixo está um trecho de código que ilustra como interagir com os dados do calendário e carregar compromissos como uma lista abrangente de eventos:
import aspose.email as ae
reader = ae.calendar.CalendarReader("calendar.ics")
print(f"Calendar contains {reader.count} events")
print(f"The Version of the calendar is {reader.version}")
print(f"The Method of the calendar is {reader.method}")
print(f"Is calendar contains contains multiple events? - {reader.is_multi_events}")
appointments = reader.load_as_multiple()
Adicionar lembretes de exibição a itens de calendário
O trecho de código a seguir mostra como adicionar um lembrete de exibição a um calendário.
Adicionar lembretes de áudio a itens de calendário
O trecho de código a seguir mostra como adicionar um lembrete de áudio a um calendário.
Definir o estado do MapiCalendar explicitamente
Aspose.Email fornece um método para definir explicitamente o estado de um objeto MapiCalendar, sobrescrevendo o comportamento padrão:
- void MapiCalendar.set_state_forced(MapiCalendarState state) - oferece maior controle sobre o estado do item de calendário, especialmente ao trabalhar com solicitações de reunião recebidas.
Quando um objeto MapiCalendar é criado, ele recebe automaticamente o estado MapiCalendarState.MEETING. Quando o item é recebido por um destinatário, o estado normalmente muda para MapiCalendarState.RECEIVED, e a classe de mensagem é atualizada para "IPM.Schedule.Meeting.Request".
O exemplo de código a seguir demonstra como criar um compromisso de reunião usando Aspose.Email para Python via .NET, definir o organizador e o estado do calendário manualmente, e salvar o compromisso como um arquivo Outlook .msg:
from aspose.email.mapi import MapiCalendar, MapiCalendarState, MapiElectronicAddress
from aspose.email.calendar import AppointmentSaveFormat
from datetime import datetime, timezone
# Create a MapiCalendar appointment
appointment = MapiCalendar(
"LAKE ARGYLE WA 6743", # Location
"Appointment", # Subject
"This is a very important meeting :)", # Body
datetime(2024, 5, 10, 12, 30, 0, tzinfo=timezone.utc), # Start time (UTC)
datetime(2024, 5, 10, 13, 30, 0, tzinfo=timezone.utc) # End time (UTC)
)
# Set the organizer
appointment.organizer = MapiElectronicAddress()
appointment.organizer.email_address = "test@aaa.com"
appointment.organizer.display_name = "test display Name"
# Forcefully set the calendar state to Meeting | Received
appointment.set_state_forced(MapiCalendarState.MEETING | MapiCalendarState.RECEIVED)
# Save the appointment to a .msg file
appointment.save("appointment.msg", AppointmentSaveFormat.MSG)
Chamando o set_state_forced, você pode definir manualmente o estado do item de calendário para um valor específico (por exemplo, MapiCalendarState.RECEIVED). Isso é particularmente útil quando você deseja:
-
Simular uma solicitação de reunião recebida.
-
Preserve o organizador e os metadados da reunião ao salvar o compromisso em um arquivo .MSG.
-
Personalize fluxos de trabalho de calendário onde o comportamento padrão não é suficiente.
Observação: Definir manualmente o estado com
set_state_forcedpode impactar o comportamento do Outlook, como a capacidade de encaminhar ou reenviar a reunião. Portanto, deve ser usado com cautela e somente quando necessário para a lógica do seu aplicativo.
Gerenciamento de arquivos de calendário
Adicionar ou recuperar anexos de arquivos de calendário
O módulo Aspose.Email Calendar ("ae.calendar") também fornece a funcionalidade de adicionar e recuperar informações de anexos.
Para incluir um anexo no compromisso, siga os passos abaixo:
- Crie um Attachment objeto que fornece o caminho do arquivo.
- Anexe este anexo à lista de anexos do compromisso.
- Salve o compromisso em um caminho de arquivo específico no formato iCalendar usando o salvar método e o formato de arquivo apropriado.
Para recuperar anexos de um compromisso, siga os passos a seguir:
- Carregue um compromisso do arquivo salvo usando o carregar método.
- Recupere o número de anexos no compromisso usando a propriedade .attachments.length.
- Itere por cada anexo.
- Imprima o nome de cada anexo usando a propriedade .name dentro do loop.
O trecho de código abaixo demonstra como criar compromissos com anexos, salvá‑los e recuperar informações dos anexos usando o módulo "ae.calendar". Ele destaca a funcionalidade e as capacidades de trabalhar com compromissos e anexos em um aplicativo de calendário.
import aspose.email as ae
import datetime as dt
# Add an attachment to an appointment
attendees = ae.MailAddressCollection()
attendees.append(ae.MailAddress("attendee@domain.com", "Recipient 1"))
appointment = ae.calendar.Appointment("Room 112", dt.datetime(2023, 5, 27), dt.date(2023, 5, 28), ae.MailAddress("organizer@domain.com"), attendees)
attachment = ae.Attachment("D:\\Aspose\\Files\\Attachment.txt")
appointment.attachments.append(attachment)
appointment.save("D:\\Aspose\\Files\\appWithAttachments_out.ics", ae.calendar.AppointmentSaveFormat.ICS)
# Retrieve attachments from an appointment
appointment2 = ae.calendar.Appointment.load("D:\\Aspose\\Files\\appWithAttachments_out.ics")
print(appointment2.attachments.length)
for att in appointment2.attachments:
print(att.name)
Recuperar status do destinatário de solicitações de reunião
Aspose.Email permite trabalhar com solicitações de reunião, representadas como um objeto MapiCalendar, e recuperar o status do destinatário (rastreamento de participação) dessas solicitações de reunião. O trecho de código a seguir mostra como identificar o status do e‑mail para cada destinatário:
Converter compromissos EML para MSG mantendo o corpo HTML
Aspose.Email torna possível converter compromissos EML para MSG e preservar o Corpo HTML. A propriedade forced_rtf_body_for_appointment da MapiConversionOptions A classe é usada para manipular o tipo do corpo do compromisso. Quando definido como True, o corpo é convertido para o formato RTF por padrão. Para manter o corpo em formato HTML, deve ser definido como False. O exemplo de código a seguir mostra como preservar o corpo HTML do compromisso ao convertê‑lo de EML para MSG:
import aspose.email as ae
eml = ae.MailMessage.load("appointment.eml")
conversionOptions = ae.mapi.MapiConversionOptions()
conversionOptions.format = ae.mapi.OutlookMessageFormat.UNICODE
# default value for ForcedRtfBodyForAppointment is true
conversionOptions.forced_rtf_body_for_appointment = False
msg = ae.mapi.MapiMessage.from_mail_message(eml, conversionOptions)
print(f"Body Type: {msg.body_type}")
msg.save("appointment.msg")