Termine verwalten: Erstellen & Bearbeiten, ICS in MSG konvertieren

Termin erstellen und auf Festplatte im MSG‑ oder ICS‑Format speichern

Die Appointment Die Klasse in Aspose.Email für .NET kann verwendet werden, um einen neuen Termin zu erstellen. In diesem Artikel erstellen wir zunächst einen Termin und speichern ihn auf der Festplatte im ICS‑Format. Die folgenden Schritte sind erforderlich, um einen Termin zu erstellen und zu speichern.

  1. Erstellen Sie eine Instanz von dem Appointment Klasse und initialisieren Sie sie mit diesem Konstruktor.
  2. Geben Sie die folgenden Argumente im obigen Konstruktor an
    1. Ort
    2. Zusammenfassung
    3. Beschreibung
    4. Startdatum
    5. Endedatum
    6. Organisator
    7. Teilnehmer
  3. Rufen Sie die Save() Methode und geben Sie den Dateinamen sowie das Format in den Argumenten an.

Der Termin kann in Microsoft Outlook oder jedem anderen Programm, das eine ICS-Datei laden kann, geöffnet werden. Wird die Datei in Microsoft Outlook geöffnet, fügt sie den Termin automatisch dem Outlook-Kalender hinzu.

Das folgende Code‑Snippet zeigt, wie Sie einen Termin auf der Festplatte im ICS‑ oder MSG‑Format erstellen und speichern.

// 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.");

Einen Termin mit HTML-Inhalt erstellen

Sie können alternative Darstellungen der Ereignisbeschreibung in verschiedenen Inhaltstypen mittels des X-ALT-DESC‑Headers angeben. Dies ermöglicht Empfängern der iCalendar‑Datei, die Darstellung zu wählen, die ihren Bedürfnissen am besten entspricht. Beispielsweise können Sie eine reine Textbeschreibung mit dem Inhaltstyp "text/plain" und eine HTML‑Beschreibung mit dem Inhaltstyp "text/html" einschließen. Für jede alternative Darstellung wird ein X-ALT-DESC‑Header hinzugefügt. Um einen Termin mit HTML‑Inhalt zu erstellen, setzen Sie die HtmlDescription Eigenschaft.

Probieren Sie das folgende Codebeispiel, um einen Termin mit alternativer HTML‑Beschreibung zu erstellen:

  1. Erstellen Sie eine neue Instanz der Appointment‑Klasse.
  2. Geben Sie die erforderlichen Parameter für den Appointment‑Konstruktor an:
    • Geben Sie den Ort des Termins an.
    • Setzen Sie das Startdatum und die -zeit.
    • Setzen Sie das Enddatum und die -zeit.
    • Geben Sie den Organisator an.
    • Geben Sie den Teilnehmer an.
  3. Setzen Sie die HtmlDescription Eigenschaft des Terminobjekts, die angibt, dass die Beschreibung im HTML‑Format vorliegt.
  4. Setzen Sie die Description‑Eigenschaft des Terminobjekts auf einen HTML‑formatierten String, eingeschlossen in einem mehrzeiligen String:
    • Das HTML‑Markup enthält einen <style>-Block, der eine CSS‑Klasse namens "text" mit Schriftstil‑Definitionen definiert.
    • Der HTML‑Body enthält ein Absatz‑Tag <p> mit der CSS‑Klasse "text" sowie die eigentliche Einladung.
  5. Das Terminobjekt ist jetzt fertig, und Sie können weitere Vorgänge ausführen oder es als iCalendar‑Datei speichern.
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>"
};

Entwurf einer Terminanfrage erstellen

In unseren vorherigen Artikeln wurde gezeigt, wie man einen Termin im ICS‑Format erstellt und speichert. Oft ist es erforderlich, eine Termin‑anfrage im Entwurfsmodus zu erstellen, sodass die Grundinformationen hinzugefügt werden und der Entwurf anschließend an andere Benutzer weitergeleitet werden kann, um notwendige Änderungen vorzunehmen. Um einen Termin im Entwurfsmodus zu speichern, muss die MethodType Eigenschaft der Appointment‑Klasse sollte auf AppointmentMethodType.Publish. Das folgende Code‑Snippet zeigt, wie Sie eine Terminanforderung im Entwurf erstellen.

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

Entwurf einer Terminerstellung aus Text

Das folgende Codebeispiel zeigt, wie man einen Entwurfstermin aus Text erstellt. 

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");

Termine anpassen

Status der Termin-Teilnehmer festlegen

Die Aspose.Email für .NET‑API lässt Sie den Status von Termin‑Teilnehmern festlegen, während Sie eine Antwortnachricht formulieren. Dies fügt die PARTSTAT‑Eigenschaft zur ICS‑Datei hinzu.

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

Produktkennung für iCalendar anpassen

Die Aspose.Email für .NET‑API ermöglicht das Abrufen oder Festlegen der Produktkennung, die das iCalendar‑Objekt erstellt hat.

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

Termine laden

Außerdem, die Appointment Klasse kann verwendet werden, um einen Termin aus einer ICS‑Datei zu laden.

Termin im ICS-Format laden

Um einen Termin im ICS-Format zu laden, sind die folgenden Schritte erforderlich:

  1. Erstellen Sie eine Instanz von dem Appointment Klasse.
  2. Rufen Sie die Load() Methode, indem Sie den Pfad der ICS‑Datei angeben.
  3. Lesen Sie beliebige Eigenschaften, um Informationen aus dem Termin (ICS‑Datei) zu erhalten.

Das folgende Code‑Snippet zeigt, wie Sie einen Termin im ICS‑Format laden.

// 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);

ICS in MSG konvertieren

Die API ermöglicht es Ihnen, einen Termin einfach in ein Nachrichtenobjekt zu konvertieren. Das folgende Codebeispiel zeigt, wie Sie eine Terminanforderung in ein MailMessage‑ oder MapiMessage‑Objekt umwandeln:

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

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

Mehrere Ereignisse aus einer ICS-Datei lesen

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

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

Mehrere Ereignisse in eine ICS‑Datei schreiben

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);
    }
}

Bestimmen der Terminversion

Um die Version eines Termins zu bestimmen, können Sie die Appointment.Version Eigenschaft des Appointment Klasse. Diese Eigenschaft hilft dabei zu bestimmen, auf welcher Version die Dateien basieren, um die Integration mit anderen Systemen und Apps sicherzustellen.

Das folgende Codebeispiel zeigt, wie Sie diese Eigenschaft in Ihrem Projekt implementieren:

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

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