Manage Calendar Items using C#

Managing calendar items programmatically can be a challenging task, especially when working with different formats and handling recurring events. In this blog post, we will explore how to work with calendar items (or events) in C# .NET using the powerful Aspose.Email library. Aspose.Email simplifies the process of creating, reading, and manipulating events in various formats like iCalendar (ICS) and Microsoft Outlook (MSG).

Calendar Items Usability

Calendar items refer to events, appointments, or tasks that are scheduled or recorded in a calendar. They can include a wide range of activities and important dates, such as meetings, birthdays, holidays, deadlines, reminders, and more. The items are typically organized by date and time, allowing individuals or groups to plan and manage their schedules effectively.

Modern calendars, whether physical or digital, allow users to create, edit, and organize these items, often providing reminders or notifications to help individuals stay on top of their commitments and responsibilities. Calendar apps on smartphones, computers, or other devices have become popular tools for managing personal and professional schedules efficiently. By using calendar items, individuals can maintain a structured and well-coordinated daily, weekly, or monthly routine.

C# .NET API to Work with Calendar Items

Before we dive into the code samples, make sure you have Aspose.Email for .NET library installed in your C# .NET project. Aspose.Email for .NET is a powerful library that provides various functionalities to work with email messages and related components in the .NET framework. When it comes to working with calendar items, Aspose.Email for .NET offers several features and capabilities that can assist you:

  • Parse and extract data from standard calendar formats like iCalendar (ICS) and vCalendar (VCS). This means you can read existing events and appointments from files or email messages.

  • Create new items programmatically using Aspose.Email for .NET. This enables you to generate and structure events or tasks directly within your application.

  • Edit and modify existing ones. You can update event details, change dates, adjust descriptions, and perform other modifications as needed.

  • Synchronize calendar data with various data sources like Microsoft Exchange Server, Google Calendar, or other calendar services

  • Set, modify, or cancel reminders associated with events.

  • Export events to different formats, such as ICS or VCS, for sharing or backup purposes. Conversely, you can also import data from external sources to your application.

  • Handle recurring events, such as weekly meetings or monthly reminders efficiently.

You can easily add the API via downloading its DLL or install from NuGet Package Manager using the following command:

PM> Install-Package Aspose.Email

Creating a New Event

Let’s start by creating a new calendar item using the Appointment class of the library. The code sample and the steps below demonstrate how to create a simple event with a start and end time, subject, and location:

  1. Create an instance of the Calendar object.
  2. Create an event and set its parameters: start time, end time, event title and location.
  3. Add the event to the calendar using the CalendarWriter.Write method.

This appointment represents a team meeting scheduled from 10:00 AM to 12:00 PM on July 31, 2023, in “Meeting Room A.”

Working with Recurring Events

Aspose.Email also simplifies handling recurring events. In a few steps and lines of code, you can create a recurring event that repeats every week for a specified number of occurrences:

  1. Create a new instance of the WeeklyRecurrencePattern class with parameters:

    int days specifies the number of days between each recurrence. In this case, it’s set to 5, indicating that the appointment will recur every 5 days.

    int weekDays specifies which days of the week the appointment will recur on. In this example, it’s set to 7, i.e. all weekdays.

  2. Set the EndDate for the recurrence pattern: The EndDate property of the WeeklyRecurrencePattern object is set to a specific date (August 7, 2023) using the DateTime constructor. This indicates that the recurring appointments will continue until this end date, and after that, they will no longer occur.

  3. Create an Appointment object: a new instance of the Appointment class, representing the recurring event.

  4. Set the Recurrence pattern for the recurring appointment.

  5. Write the recurring appointment to the calendar.

Reading Calendar Items

Reading existing calendar items is equally straightforward. The C# code below with the detailed steps demonstrates how to load an event from an ICS file and access its events using the CalendarReader class:

  1. Instantiate the CalendarReader object by creating a new instance of the CalendarReader class specifying the path to the ICS file as a parameter.

  2. Load the events into memory to access and process them.

  3. Enter a while loop to iterate through each event in the loaded calendar. The reader.NextEvent() method is called within the loop, which returns true if there is another event available for processing. If there are no more events, the loop will terminate.

  4. Within the loop, access and retrieve the current event in the ICS file with the reader.Current property.

  5. Process the loaded appointment: The code inside the loop can now access and process the properties of the loadedAppointment object. This includes details such as the start and end times of the appointment, the event title, location, organizer, attendees, and other relevant information. You can perform any custom operations or business logic based on this data.

Repeat the loop: After processing the current appointment, the loop continues to the next iteration, where reader.NextEvent() is called again. This process continues until all appointments in the ICS file have been processed.

Saving Calendar Items

After making changes to the calendar items, you can save them to different formats supported by Aspose.Email for .NET, such as ICS or MSG using the Save method.


In this blog post, we explored basic operations with calendar items such as creating new events, handling recurring events, reading from existing files, and saving changes. We also disclosed the capabilities of Aspose.Email library in enhancing C# .NET applications and streamlining calendar management tasks efficiently. The library provides a robust set of features for working with these items in C# .NET, making it easy to create, read, and manipulate events with different formats and recurring patterns. To learn more and explore additional features, check out the official Aspose.Email documentation and code examples.

See Also