Správa schůzek: Vytváření a úpravy, převod ICS na MSG

Vytvoření schůzky a uložení na disk ve formátu MSG nebo ICS

The Appointment třída v Aspose.Email pro .NET může být použita k vytvoření nové schůzky. V tomto článku nejprve vytvoříme schůzku a uložíme ji na disk ve formátu ICS. Následující kroky jsou potřeba k vytvoření schůzky a jejímu uložení na disk.

  1. Vytvořte instanci Appointment třídu a inicializujte ji tímto konstruktorem.
  2. Předávejte následující argumenty do výše uvedeného konstruktoru
    1. Místo
    2. Shrnutí
    3. Popis
    4. Počáteční datum
    5. Datum konce
    6. Organizátor
    7. Účastníci
  3. Zavolejte Save() metodu a v argumentech zadejte název souboru a formát.

Schůzku lze otevřít v Microsoft Outlook nebo v jakémkoli programu, který dokáže načíst soubor ICS. Pokud je soubor otevřen v Microsoft Outlook, automaticky přidá schůzku do kalendáře Outlook.

Následující úryvek kódu ukazuje, jak vytvořit a uložit schůzku na disk ve formátu ICS nebo 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.");

Vytvořit schůzku s HTML obsahem

Můžete specifikovat alternativní reprezentace popisu události v různých typech obsahu pomocí hlavičky X-ALT-DESC. Umožňuje příjemcům iCalendar souboru vybrat reprezentaci, která nejlépe vyhovuje jejich potřebám. Například můžete zahrnout popis v prostém textu pomocí typu obsahu "text/plain" a HTML popis pomocí typu obsahu "text/html". Pro každou alternativní reprezentaci je přidána hlavička X-ALT-DESC. Pro vytvoření schůzky s HTML obsahem nastavte HtmlDescription vlastnost.

Vyzkoušejte následující ukázkový kód k vytvoření schůzky s alternativním HTML popisem:

  1. Vytvořte novou instanci třídy Appointment.
  2. Poskytněte potřebné parametry konstruktoru Appointment:
    • Určete místo konání schůzky.
    • Nastavte datum a čas začátku.
    • Nastavte datum a čas konce.
    • Určete organizátora.
    • Určete účastníka.
  3. Nastavte HtmlDescription vlastnost objektu schůzky, která naznačuje, že popis je ve formátu HTML.
  4. Nastavte vlastnost Description objektu schůzky na HTML formátovaný řetězec uzavřený do víceřádkového řetězce:
    • HTML značkování obsahuje blok <style> definující CSS třídu nazvanou "text" s fontovými styly.
    • HTML tělo obsahuje značku odstavce <p> s CSS třídou "text" a skutečnou pozvánkovou zprávu.
  5. Objekt schůzky je nyní připraven a můžete provádět další operace nebo jej uložit jako soubor 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>"
};

Vytvořit požadavek na koncept schůzky

V našich předchozích článcích jsme ukázali, jak vytvořit a uložit schůzku ve formátu ICS. Často je potřeba vytvořit požadavek na schůzku v režimu konceptu, aby byla přidána základní informace a poté byl tento koncept předán dalším uživatelům k nezbytným úpravám podle individuálního použití. Pro uložení schůzky v režimu konceptu je nutné, aby MethodType vlastnost třídy Appointment by měla být nastavena na AppointmentMethodType.Publish. Následující úryvek kódu ukazuje, jak vytvořit koncept požadavku na schůzku.

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

Vytvoření konceptu schůzky z textu

Následující úryvek kódu ukazuje, jak vytvořit koncept schůzky z textu. 

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

Přizpůsobení schůzek

Nastavit stav účastníků schůzky

Aspose.Email pro .NET API vám umožní nastavit stav účastníků schůzky při vytváření odpovědní zprávy. Tím se do souboru ICS přidá vlastnost PARTSTAT.

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

Přizpůsobit identifikátor produktu pro iCalendar

Aspose.Email pro .NET API umožňuje získat nebo nastavit identifikátor produktu, který vytvořil objekt 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);

Načítání schůzek

Také Appointment třída může být použita k načtení schůzky ze souboru ICS.

Načíst schůzku ve formátu ICS

Pro načtení schůzky ve formátu ICS jsou vyžadovány následující kroky:

  1. Vytvořte instanci Appointment třída.
  2. Zavolejte Load() metoda, která poskytuje cestu k souboru ICS.
  3. Přečtěte libovolnou vlastnost a získejte jakékoli informace z události (soubor ICS).

Následující úryvek kódu ukazuje, jak načíst schůzku ve formátu 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);

Převod ICS na MSG

API vám umožňuje snadno převést schůzku na objekt zprávy. Následující příklad kódu ukazuje, jak převést požadavek na schůzku na MailMessage nebo MapiMessage:

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

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

Číst více událostí ze souboru 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...

Zapsat více událostí do souboru 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);
    }
}

Zjištění verze schůzky

Pro určení verze schůzky můžete použít Appointment.Version vlastnost třídy Appointment třída. Tato vlastnost pomáhá určit, na jaké verzi jsou jejich soubory založeny, což zajišťuje integraci s ostatními systémy a aplikacemi.

Následující ukázkový kód ukazuje, jak implementovat tuto vlastnost ve vašem projektu:

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

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