Správa položek kalendáře Outlook

The MapiCalendar třída v knihovně Aspose.Email nabízí různé metody a atributy pro konfiguraci a manipulaci s položkami kalendáře. To umožňuje efektivní správu položek kalendáře Outlook, zvyšuje produktivitu a organizaci. Níže jsou sekce, které vás provedou různými aspekty správy položek kalendáře.

Vytváření a ukládání položek kalendáře

Vytvořit a uložit položky kalendáře

Následující úryvek kódu demonstruje, jak vytvořit a uložit položku kalendáře ve formátu ICS:

  1. Určete cestu, kde bude váš kalendářní soubor uložen.
  2. Vytvořte schůzku inicializací nového MapiCalendar objekt s konkrétními podrobnostmi, jako jsou místo, předmět, popis, čas začátku a konce.
  3. Uložte vytvořenou schůzku jako soubor ICS ve zvoleném adresáři.
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)

Uložit položky kalendáře jako MSG

Následující úryvek kódu vám ukáže, jak uložit položku kalendáře jako MSG:

Nastavit ID produktu pro převod MapiCalendar na ICS

Knihovna Aspose.Email vám umožňuje uložit MapiCalendar (položku kalendáře) do souboru ICS (iCalendar) s konkrétními volbami. Následující vlastnosti umožní vám zachovat původní datum a časové razítko spojené s položkou kalendáře a nastavit identifikátor produktu v souboru ICS, například na "Foo Ltd", respektive:

  • ics_save_options.keep_original_date_time_stamp
  • ics_save_options.product_identifier

Identifikátor produktu je pole, které určuje software nebo službu, která vygenerovala soubor ICS.

Zde je ukázka kódu, která vám umožní nastavit ID produktu při ukládání MapiCalendar do formátu 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)

Spočítat celkový počet událostí v kalendáři

The CalendarReader třída poskytuje funkci pro čtení a analýzu dat kalendáře z určeného souboru. Inicializací objektu CalendarReader můžete získat klíčové podrobnosti, jako je celkový počet událostí, verze kalendáře, použítá metoda a zda kalendář obsahuje více událostí. Níže je úryvek kódu, který ukazuje, jak pracovat s daty kalendáře a načíst schůzky jako komplexní seznam událostí:

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

Přidat zobrazovací připomínky do položek kalendáře

Následující úryvek kódu ukazuje, jak přidat vizuální připomínku do kalendáře.

Přidat zvukové připomínky do položek kalendáře

Následující úryvek kódu vám ukáže, jak přidat zvukovou připomínku do kalendáře.

Explicitně nastavit stav MapiCalendar

Aspose.Email poskytuje metodu pro explicitní definování stavu objektu MapiCalendar, přepisující výchozí chování:

Když je vytvořen objekt MapiCalendar, je automaticky přiřazen stav MapiCalendarState.MEETING. Když je položka přijata příjemcem, stav se obvykle změní na MapiCalendarState.RECEIVED a třída zprávy se aktualizuje na "IPM.Schedule.Meeting.Request".

Níže uvedený ukázkový kód demonstruje, jak vytvořit schůzku pomocí Aspose.Email pro Python via .NET, ručně nastavit organizátora a stav kalendáře a uložit schůzku jako soubor 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)

Voláním set_state_forced, můžete ručně nastavit stav položky kalendáře na konkrétní hodnotu (např. MapiCalendarState.RECEIVED). To je zvláště užitečné, když chcete:

  • Simulovat přijatou žádost o schůzku.

  • Zachovat metadata organizátora a schůzky při ukládání schůzky do souboru .MSG.

  • Přizpůsobte pracovní postupy kalendáře, kde výchozí chování není dostačující.

Poznámka: Ruční nastavení stavu pomocí set_state_forced může ovlivnit chování Outlooku, například možnost přeposlat nebo znovu odeslat schůzku. Proto by se mělo používat opatrně a jen když je to nezbytné pro logiku vaší aplikace.

Správa souborů kalendáře

Přidat nebo získat přílohy ze souborů kalendáře

Modul Aspose.Email Calendar ("ae.calendar") také poskytuje funkci přidávat a získávat informace o přílohách.

Pro zahrnutí přílohy do schůzky postupujte podle níže uvedených kroků:

  1. Vytvořte Attachment objekt poskytující cestu k souboru.
  2. Přidejte tuto přílohu do seznamu příloh schůzky.
  3. Uložte schůzku na konkrétní cestu souboru ve formátu iCalendar pomocí uložit metodu a vhodný formát souboru.

Pro získání příloh ze schůzky proveďte následující kroky:

  1. Načtěte schůzku ze uloženého souboru pomocí načíst metoda.
  2. Získejte počet příloh ve schůzce pomocí vlastnosti .attachments.length.
  3. Iterujte přes každou přílohu.
  4. Vypište název každé přílohy pomocí vlastnosti .name uvnitř smyčky.

Níže uvedený úryvek kódu demonstruje, jak vytvořit schůzky s přílohami, uložit je a získat informace o příloze pomocí modulu "ae.calendar". Zvýrazňuje funkčnost a možnosti práce se schůzkami a přílohami v kalendářové aplikaci.

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)

Získat stav příjemce z žádostí o schůzku

Aspose.Email vám umožňuje pracovat s žádostmi o schůzku, reprezentovanými jako objekt MapiCalendar, a získat stav příjemce (sledování účasti) z takových žádostí. Následující úryvek kódu vám ukáže, jak identifikovat stav e‑mailu pro každého příjemce:

Převést schůzky z EML na MSG při zachování HTML těla

Aspose.Email umožňuje převést schůzku z EML na MSG a zachovat HTML tělo. Vlastnost forced_rtf_body_for_appointment třídy MapiConversionOptions třída se používá k manipulaci s typem těla schůzky. Když je nastavena na True, tělo je ve výchozím nastavení převedeno do formátu RTF. Pro zachování těla v HTML formátu by měla být nastavena na False. Následující ukázkový kód ukazuje, jak zachovat HTML tělo schůzky při převodu z EML na 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")