Zarządzanie spotkaniami: tworzenie i modyfikacja, konwersja z ICS do MSG

Utwórz spotkanie i zapisz na dysku w formacie MSG lub ICS

Ten Appointment klasa w Aspose.Email for .NET może być użyta do utworzenia nowego spotkania. W tym artykule najpierw tworzymy spotkanie i zapisujemy je na dysku w formacie ICS. Następujące kroki są wymagane do utworzenia spotkania i zapisania go na dysku.

  1. Utwórz instancję Appointment klasę i zainicjalizuj ją przy użyciu tego konstruktora.
  2. Przekaż następujące argumenty do powyższego konstruktora
    1. Lokalizacja
    2. Podsumowanie
    3. Opis
    4. Data rozpoczęcia
    5. Data zakończenia
    6. Organizator
    7. Uczestnicy
  3. Wywołaj Save() metodę i określić nazwę pliku oraz format w argumentach.

Spotkanie może być otwarte w Microsoft Outlook lub w dowolnym programie, który potrafi wczytać plik ICS. Jeśli plik zostanie otwarty w Microsoft Outlook, automatycznie dodaje spotkanie do kalendarza Outlook.

Poniższy fragment kodu pokazuje, jak utworzyć i zapisać spotkanie na dysku w formacie ICS lub MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET

// Create and initialize an instance of the Appointment class
Appointment appointment = new Appointment(
    "Meeting Room 3 at Office Headquarters",// Location
    "Monthly Meeting",                      // Summary
    "Please confirm your availability.",    // Description
    new DateTime(2015, 2, 8, 13, 0, 0),     // Start date
    new DateTime(2015, 2, 8, 14, 0, 0),     // End date
    "from@domain.com",                      // Organizer
    "attendees@domain.com");                // Attendees

// Save the appointment to disk in ICS format            
appointment.Save(fileName + ".ics", new AppointmentIcsSaveOptions());
Console.WriteLine("Appointment created and saved to disk successfully.");

// Save the appointment to disk in MSG format
appointment.Save(fileName + ".msg", new AppointmentMsgSaveOptions(););
Console.WriteLine("Appointment created and saved to disk successfully.");

Utwórz spotkanie z zawartością HTML

Możesz określić alternatywne reprezentacje opisu wydarzenia w różnych typach treści przy użyciu nagłówka X-ALT-DESC. Umożliwia to odbiorcom pliku iCalendar wybranie reprezentacji najlepiej spełniającej ich potrzeby. Na przykład możesz dołączyć opis w formacie tekstowym przy użyciu typu "text/plain" oraz opis w HTML przy użyciu typu "text/html". Dla każdej alternatywnej reprezentacji dodawany jest nagłówek X-ALT-DESC. Aby utworzyć spotkanie z treścią HTML, ustaw HtmlDescription właściwość.

Wypróbuj poniższy przykład kodu, aby utworzyć spotkanie z alternatywnym opisem w HTML:

  1. Utwórz nową instancję klasy Appointment.
  2. Podaj niezbędne parametry do konstruktora Appointment:
    • Określ miejsce spotkania.
    • Ustaw datę i godzinę rozpoczęcia.
    • Ustaw datę i godzinę zakończenia.
    • Określ organizatora.
    • Określ uczestnika.
  3. Ustaw HtmlDescription właściwość obiektu spotkania wskazująca, że opis jest w formacie HTML.
  4. Ustaw właściwość Description obiektu spotkania na ciąg sformatowany w HTML, zamknięty w wieloliniowym ciągu znaków:
    • Znacznik HTML zawiera blok <style> definiujący klasę CSS o nazwie "text" ze stylami czcionki.
    • Ciało HTML zawiera znacznik paragrafu <p> z klasą CSS "text" oraz faktyczną treść zaproszenia.
  5. Obiekt spotkania jest teraz gotowy; możesz wykonać dalsze operacje lub zapisać go jako plik iCalendar.
var appointment = new Appointment("Bygget 83",
    DateTime.UtcNow, // start date
    DateTime.UtcNow.AddHours(1), // end date
    new MailAddress("TintinStrom@from.com", "Tintin Strom"), // organizer
    new MailAddress("AinaMartensson@to.com", "Aina Martensson")) // attendee
{
    HtmlDescription = @"
    <html>
     <style type=""text/css"">
      .text {
             font-family:'Comic Sans MS';
             font-size:16px;
            }
     </style>
    <body>
     <p class=""text"">Hi, I'm happy to invite you to our party.</p>
    </body>
    </html>"
};

Utwórz wniosek o wersję roboczą spotkania

W naszych wcześniejszych artykułach pokazaliśmy, jak tworzyć i zapisywać spotkanie w formacie ICS. Często wymaga się utworzenia żądania spotkania w trybie szkicu, aby podstawowe informacje zostały dodane, a następnie szkic został przekazany innym użytkownikom w celu wprowadzenia niezbędnych zmian. Aby zapisać spotkanie w trybie szkicu, MethodType właściwość klasy Appointment powinna być ustawiona na AppointmentMethodType.Publish. Poniższy fragment kodu pokazuje, jak utworzyć wstępne żądanie spotkania.

string sender = "test@gmail.com";
string recipient = "test@email.com";

MailMessage message = new MailMessage(sender, recipient, string.Empty, string.Empty);

Appointment app = new Appointment(string.Empty, DateTime.Now, DateTime.Now, sender, recipient)
{
    MethodType = AppointmentMethodType.Publish
};

message.AddAlternateView(app.RequestApointment());

MapiMessage msg = MapiMessage.FromMailMessage(message);

// Save the appointment as draft.
msg.Save(dstDraft);

Console.WriteLine(Environment.NewLine + "Draft saved at " + dstDraft);

Tworzenie wersji roboczej spotkania z tekstu

Poniższy fragment kodu pokazuje, jak utworzyć wersję roboczą spotkania z tekstu. 

string ical = @"BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:-//Aspose Ltd//iCalender Builder (v3.0)//EN
VERSION:2.0
BEGIN:VEVENT
ATTENDEE;CN=test@gmail.com:mailto:test@gmail.com
DTSTART:20130220T171439
DTEND:20130220T174439
DTSTAMP:20130220T161439Z
END:VEVENT
END:VCALENDAR";

string sender = "test@gmail.com";
string recipient = "test@email.com";
MailMessage message = new MailMessage(sender, recipient, string.Empty, string.Empty);
AlternateView av = AlternateView.CreateAlternateViewFromString(ical, new ContentType("text/calendar"));
message.AlternateViews.Add(av);
MapiMessage msg = MapiMessage.FromMailMessage(message);
msg.Save(dataDir + "draft_out.msg");

Dostosowywanie spotkań

Ustaw status uczestników spotkania

API Aspose.Email dla .NET pozwala ustawić status uczestników spotkania podczas tworzenia wiadomości odpowiedzi. Dodaje to właściwość PARTSTAT do pliku ICS.

DateTime startDate = new DateTime(2011, 12, 10, 10, 12, 11),
         endDate = new DateTime(2012, 11, 13, 13, 11, 12);
MailAddress organizer = new MailAddress("aaa@amail.com", "Organizer");
MailAddressCollection attendees = new MailAddressCollection();
MailAddress attendee1 = new MailAddress("bbb@bmail.com", "First attendee");
MailAddress attendee2 = new MailAddress("ccc@cmail.com", "Second attendee");

attendee1.ParticipationStatus = ParticipationStatus.Accepted;
attendee2.ParticipationStatus = ParticipationStatus.Declined;
attendees.Add(attendee1);
attendees.Add(attendee2);

Appointment target = new Appointment(location, startDate, endDate, organizer, attendees);

Dostosuj identyfikator produktu dla iCalendar

API Aspose.Email dla .NET umożliwia pobranie lub ustawienie identyfikatora produktu, które utworzyło obiekt iCalendar.

string description = "Test Description";
Appointment app = new Appointment("location", "test appointment", description, DateTime.Today,
DateTime.Today.AddDays(1), "first@test.com", "second@test.com");

IcsSaveOptions saveOptions = IcsSaveOptions.Default;
saveOptions.ProductId = "Test Corporation";
app.Save(dataDir + "ChangeProdIdOfICS.ics", saveOptions);

Ładowanie spotkań

Ponadto, Appointment klasa może być użyta do wczytania spotkania z pliku ICS.

Załaduj spotkanie w formacie ICS

Aby załadować spotkanie w formacie ICS, wymagane są następujące kroki:

  1. Utwórz instancję Appointment klasa.
  2. Wywołaj Load() metoda poprzez podanie ścieżki do pliku ICS.
  3. Odczytaj dowolną właściwość, aby uzyskać dowolną informację ze spotkania (plik ICS).

Poniższy fragment kodu pokazuje, jak załadować spotkanie w formacie ICS.

// Load an Appointment just created and saved to disk and display its details.
Appointment loadedAppointment = Appointment.Load(dstEmail);
Console.WriteLine(Environment.NewLine + "Loaded Appointment details are as follows:");
// Display the appointment information on screen
Console.WriteLine("Summary: " + loadedAppointment.Summary);
Console.WriteLine("Location: " + loadedAppointment.Location);
Console.WriteLine("Description: " + loadedAppointment.Description);
Console.WriteLine("Start date: " + loadedAppointment.StartDate);
Console.WriteLine("End date: " + loadedAppointment.EndDate);
Console.WriteLine("Organizer: " + appointment.Organizer);
Console.WriteLine("Attendees: " + appointment.Attendees);
Console.WriteLine(Environment.NewLine + "Appointment loaded successfully from " + dstEmail);

Konwertuj ICS do MSG

API umożliwia łatwą konwersję spotkania do obiektu wiadomości. Poniższy przykład kodu pokazuje, jak przekształcić żądanie spotkania w MailMessage lub MapiMessage:

var appointment = Appointment.Load("appRequest.ics");

var eml = appointment.ToMailMessage();
var msg = appointment.ToMapiMessage();

Odczyt wielu zdarzeń z pliku ICS

List<Appointment> appointments = new List<Appointment>();
CalendarReader reader = new CalendarReader(dataDir + "US-Holidays.ics");

while (reader.NextEvent())
{
    appointments.Add(reader.Current);
}
//working with appointments...

Zapis wielu zdarzeń do pliku ICS

IcsSaveOptions saveOptions = new IcsSaveOptions();
saveOptions.Action = AppointmentAction.Create;
using (CalendarWriter writer = new CalendarWriter(dataDir + "WriteMultipleEventsToICS_out.ics", saveOptions))
{
    for (int i = 0; i < 10; i++)
    {
        Appointment app = new Appointment(string.Empty, DateTime.Now, DateTime.Now, "sender@domain.com", "receiver@domain.com");
        app.Description = "Test body " + i;
        app.Summary = "Test summary:" + i;
        writer.Write(app);
    }
}

Określ wersję spotkania

Aby określić wersję spotkania, możesz użyć Appointment.Version właściwość Appointment klasa. Ta właściwość pomaga określić, na której wersji opierają się ich pliki, zapewniając integrację z innymi systemami i aplikacjami.

Poniższy przykład kodu pokazuje, jak zaimplementować tę właściwość w projekcie:

var app = Appointment.Load("meeting.ics");

if (app.Version == 1.0)
{
    // do something
}