Hantera Outlook-kalenderobjekt

Den MapiCalendar klassen i Aspose.Email-biblioteket erbjuder olika metoder och attribut för att konfigurera och manipulera kalenderobjekt. Detta möjliggör effektiv hantering av Outlook-kalenderobjekt, vilket ökar produktivitet och organisation. Nedan följer sektionerna som guidar dig genom olika aspekter av att hantera kalenderobjekt.

Skapa och spara kalenderobjekt

Skapa och spara kalenderobjekt

Följande kodsnutt demonstrerar hur man skapar och sparar ett kalenderobjekt i ICS-format:

  1. Ange sökvägen där din kalenderfil ska lagras.
  2. Skapa ett möte genom att initiera ett nytt MapiCalendar objekt med specifika detaljer såsom plats, ämne, beskrivning, start- och sluttider.
  3. Spara den skapade mötet som en ICS-fil i den angivna katalogen.
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)

Spara kalenderobjekt som MSG

Följande kodsnutt visar hur du sparar kalenderobjektet som MSG:

Ange produkt‑ID för MapiCalendar till ICS‑konvertering

Aspose.Email-biblioteket låter dig spara en MapiCalendar (ett kalenderobjekt) till en ICS (iCalendar)-fil med specifika alternativ. Följande egenskaper kommer att låta dig behålla de ursprungliga datum‑ och tidsstämplarna som är associerade med kalenderobjektet och sätta produktidentifieraren i ICS-filen, till exempel till "Foo Ltd", respektive:

  • ics_save_options.keep_original_date_time_stamp
  • ics_save_options.product_identifier

Produktidentifieraren är ett fält som identifierar den programvara eller tjänst som genererade ICS-filen.

Här är ett kodexempel som låter dig ange ett produkt‑ID när du sparar MapiCalendar till 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)

Räkna totala kalenderhändelser

Den CalendarReader klassen ger funktionalitet för att läsa och analysera kalenderdata från en angiven fil. Genom att initiera ett CalendarReader-objekt kan du extrahera viktiga detaljer såsom totalt antal händelser, kalenderns version, den använda metoden och huruvida kalendern innehåller flera händelser. Nedan är en kodsnutt som illustrerar hur du interagerar med kalenderdata och laddar möten som en omfattande lista av händelser:

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

Lägg till skärm‑påminnelser till kalenderobjekt

Följande kodsnutt visar hur du lägger till en displaypåminnelse i en kalender.

Lägg till ljudpåminnelser till kalenderobjekt

Följande kodsnutt visar hur du lägger till ett ljudpåminnelse till en kalender.

Ange MapiCalendar‑tillståndet explicit

Aspose.Email erbjuder en metod för att uttryckligen definiera tillståndet för ett MapiCalendar-objekt, och åsidosätta standardbeteendet:

När ett MapiCalendar-objekt skapas tilldelas det automatiskt tillståndet MapiCalendarState.MEETING. När posten tas emot av en mottagare ändras tillståndet vanligtvis till MapiCalendarState.RECEIVED, och meddelandeklassen uppdateras till "IPM.Schedule.Meeting.Request".

Följande kodexempel demonstrerar hur man skapar ett mötesmöte med Aspose.Email för Python via .NET, manuellt sätter organisatör och kalendertillstånd, och sparar mötet som en Outlook .msg-fil:

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)

Genom att anropa set_state_forced, du kan manuellt sätta kalenderpostens tillstånd till ett specifikt värde (t.ex. MapiCalendarState.RECEIVED). Detta är särskilt användbart när du vill:

  • Simulera en mottagen mötesförfrågan.

  • Bevara organisatörs‑ och mötesmetadata när mötet sparas till en .MSG-fil.

  • Anpassa kalenderarbetsflöden där standardbeteendet inte är tillräckligt.

Obs: Manuell inställning av tillståndet med set_state_forced kan påverka Outlooks beteende, såsom möjligheten att vidarebefordra eller skicka om mötet. Därför bör det användas med försiktighet och endast när det är nödvändigt för din applikations logik.

Hantera kalenderfiler

Lägg till eller hämta bilagor från kalenderfiler

Aspose.Email Calendar ("ae.calendar")-modulen erbjuder också funktionalitet för att lägga till och hämta information om bilagor.

För att inkludera en bilaga i mötet, följ stegen nedan:

  1. Skapa en Attachment objekt som tillhandahåller filsökvägen.
  2. Lägg till denna bilaga i mötets lista av bilagor.
  3. Spara mötet till en specifik filsökväg i iCalendar-format med hjälp av spara metod och lämpligt filformat.

För att hämta bilagor från ett möte, följ dessa steg:

  1. Läs in ett möte från den sparade filen med hjälp av ladda metod.
  2. Hämta antalet bilagor i mötet med .attachments.length-egenskapen.
  3. Iterera igenom varje bilaga.
  4. Skriv ut namnet på varje bilaga med .name-egenskapen inom loopen.

Kodsnutten nedan demonstrerar hur man skapar möten med bilagor, sparar dem och hämtar information om bilagor med hjälp av "ae.calendar"-modulen. Den belyser funktionaliteten och möjligheterna att arbeta med möten och bilagor i en kalenderapplikation.

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)

Hämta mottagarstatus från mötesförfrågningar

Aspose.Email låter dig arbeta med mötesförfrågningar, representerade som ett MapiCalendar-objekt, och hämta mottagarens status (deltagarspårning) från sådana mötesförfrågningar. Följande kodsnutt visar hur du identifierar status för e‑postmeddelandet för varje mottagare:

Konvertera EML‑möten till MSG samtidigt som HTML‑kroppen bevaras

Aspose.Email möjliggör konvertering av EML‑möte till MSG och bevarar HTML‑kroppen. forced_rtf_body_for_appointment-egenskapen i MapiConversionOptions klassen används för att manipulera typen av möteskroppen. När den är satt till True konverteras kroppen som standard till RTF-format. För att behålla kroppen i HTML-format bör den sättas till False. Följande kodexempel visar hur man bevarar HTML‑kroppen i mötet när man konverterar från EML till 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")