Hantera möten: Skapa & manipulera, konvertera ICS till MSG

Skapa ett möte och spara till disk i MSG- eller ICS-format

Den Appointment klass i Aspose.Email för .NET kan användas för att skapa ett nytt möte. I den här artikeln skapar vi först ett möte och sparar det till en disk i ICS-format. Följande steg krävs för att skapa ett möte och spara det på en disk.

  1. Skapa en instans av Appointment klass och initiera den med denna konstruktor.
  2. Skicka följande argument till konstruktorn ovan
    1. Plats
    2. Sammanfattning
    3. Beskrivning
    4. Startdatum
    5. Slutdatum
    6. Organisatör
    7. Deltagare
  3. Anropa Save() metod och ange filnamnet samt formatet i argumenten.

Mötet kan öppnas i Microsoft Outlook eller i vilket program som helst som kan läsa in en ICS-fil. Om filen öppnas i Microsoft Outlook läggs mötet automatiskt till i Outlook‑kalendern.

Följande kodsnutt visar hur du skapar och sparar ett möte till en disk i ICS- eller MSG-format.

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

Skapa ett möte med HTML‑innehåll

Du kan ange alternativa representationer av händelsens beskrivning i olika innehållstyper med X-ALT-DESC‑rubriken. Den låter mottagare av iCalendar-filen välja den representation som bäst passar deras behov. Till exempel kan du inkludera en vanlig textbeskrivning med innehållstypen "text/plain" och en HTML‑beskrivning med innehållstypen "text/html". X-ALT-DESC‑rubriken läggs till för varje alternativ representation. För att skapa ett möte med HTML‑innehåll, ställ in HtmlDescription egenskap.

Prova följande kodexempel för att skapa ett möte med alternativ HTML‑beskrivning:

  1. Skapa en ny instans av Appointment‑klassen.
  2. Tillhandahåll nödvändiga parametrar till Appointment‑konstruktorn:
    • Ange platsen för mötet.
    • Ställ in startdatum och -tid.
    • Ställ in slutdatum och -tid.
    • Ange organisatören.
    • Ange deltagaren.
  3. Ställ in HtmlDescription egenskap i mötesobjektet, som indikerar att beskrivningen är i HTML-format.
  4. Ställ in Description‑egenskapen för mötesobjektet till en HTML‑formaterad sträng, omgiven av en flerradig sträng:
    • HTML‑markupen innehåller ett <style>-block som definierar CSS‑klassen "text" med teckensnittsstilar.
    • HTML‑kroppen innehåller ett paragraf‑tagg <p> med CSS‑klassen "text" och själva inbjudningsmeddelandet.
  5. Mötesobjektet är nu klart, och du kan utföra ytterligare operationer eller spara det som en iCalendar-fil.
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>"
};

Skapa en utkastförfrågan för möte

Det visades i våra tidigare artiklar hur man skapar och sparar ett möte i ICS-format. Det är ofta nödvändigt att skapa en mötesförfrågan i utkastläge, så att grundläggande information läggs till och sedan kan samma utkastmöte vidarebefordras till andra användare för nödvändiga ändringar enligt individuella behov. För att spara ett möte i utkastläge, bör MethodType egenskap i Appointment-klassen bör sättas till AppointmentMethodType.Publish. Följande kodsnutt visar hur du skapar en utkastmötesförfrågan.

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

Skapa utkast för möte från text

Följande kodavsnitt visar hur du skapar ett utkastmöte från text. 

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

Anpassa möten

Ställ in deltagarnas status för mötesdeltagare

Aspose.Email för .NET API låter dig ange status för mötesdeltagare när du formulerar ett svarmeddelande. Detta lägger till PARTSTAT-egenskapen i ICS-filen.

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

Anpassa produktidentifierare för iCalendar

Aspose.Email för .NET API låter dig hämta eller ange produktidentifieraren som skapade iCalendar-objektet.

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

Ladda möten

Dessutom, Appointment klass kan användas för att ladda ett möte från en ICS-fil.

Läs in ett möte i ICS-format

För att läsa in ett möte i ICS-format krävs följande steg:

  1. Skapa en instans av Appointment klass.
  2. Anropa Load() metod genom att ange sökvägen till ICS‑filen.
  3. Läs vilken egenskap som helst för att få information från mötet (ICS‑fil).

Följande kodsnutt visar hur du laddar ett möte i ICS-format.

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

Konvertera ICS till MSG

API:et låter dig enkelt konvertera ett möte till ett meddelandeobjekt. Följande kodexempel visar hur du konverterar en mötesförfrågan till ett MailMessage eller MapiMessage:

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

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

Läs flera händelser från en ICS-fil

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

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

Skriv flera händelser till en ICS-fil

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

Bestäm mötess version

För att avgöra versionen av ett möte kan du använda Appointment.Version egenskap hos Appointment klass. Denna egenskap hjälper till att avgöra vilken version deras filer baseras på, vilket säkerställer integration med andra system och appar.

Följande kodexempel visar hur du implementerar denna egenskap i ditt projekt:

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

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