Gestire gli appuntamenti: creare e manipolare, convertire ICS in MSG
Crea un appuntamento e salvalo su disco in formato MSG o ICS
Il Appointment La classe in Aspose.Email per .NET può essere usata per creare un nuovo appuntamento. In questo articolo, creiamo prima un appuntamento e lo salviamo su disco in formato ICS. Sono richiesti i seguenti passaggi per creare un appuntamento e salvarlo su disco.
- Crea un’istanza di Appointment classe e inizializzarla con questo costruttore.
- Passare i seguenti argomenti nel costruttore sopra
- Posizione
- Riepilogo
- Descrizione
- Data di inizio
- Data di fine
- Organizzatore
- Partecipanti
- Chiama il Save() metodo e specificare il nome file e il formato negli argomenti.
L’appuntamento può essere aperto in Microsoft Outlook o in qualsiasi programma in grado di caricare un file ICS. Se il file viene aperto in Microsoft Outlook, aggiunge automaticamente l’appuntamento nel calendario di Outlook.
Il seguente frammento di codice mostra come creare e salvare un appuntamento su disco in formato ICS o 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.");
Crea un appuntamento con contenuto HTML
Puoi specificare rappresentazioni alternative della descrizione dell’evento in diversi tipi di contenuto usando l’intestazione X-ALT-DESC. Consente ai destinatari del file iCalendar di scegliere la rappresentazione più adatta alle loro esigenze. Ad esempio, puoi includere una descrizione in testo semplice usando il tipo di contenuto "text/plain" e una descrizione HTML usando il tipo di contenuto "text/html". L’intestazione X-ALT-DESC è aggiunta per ogni rappresentazione alternativa. Per creare un appuntamento con contenuto HTML, imposta il HtmlDescription proprietà.
Prova il seguente esempio di codice per creare un appuntamento con descrizione HTML alternativa:
- Crea una nuova istanza della classe Appointment.
- Fornisci i parametri necessari al costruttore Appointment:
- Specifica la posizione dell’appuntamento.
- Imposta la data e l’ora di inizio.
- Imposta la data e l’ora di fine.
- Specifica l’organizzatore.
- Specifica il partecipante.
- Imposta il HtmlDescription proprietà dell’oggetto appuntamento, che indica che la descrizione è in formato HTML.
- Imposta la proprietà Description dell’oggetto appuntamento a una stringa formattata in HTML, racchiusa in una stringa multilinea:
- Il markup HTML include un blocco <style> che definisce una classe CSS chiamata "text" con gli stili di carattere.
- Il corpo HTML contiene un tag paragrafo <p> con la classe CSS "text" e il messaggio di invito effettivo.
- L’oggetto appuntamento è ora pronto e puoi eseguire ulteriori operazioni o salvarlo come file 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>"
};
Crea una richiesta di appuntamento bozza
Nei nostri articoli precedenti è stato mostrato come creare e salvare un appuntamento in formato ICS. È spesso necessario creare una richiesta di appuntamento in modalità Bozza, così da aggiungere le informazioni di base e poi inoltrare la stessa Bozza di Appuntamento ad altri utenti per le modifiche necessarie secondo le singole esigenze. Per salvare un Appuntamento in modalità Bozza, il MethodType la proprietà della classe Appointment dovrebbe essere impostata a AppointmentMethodType.Publish. Il seguente frammento di codice mostra come creare una richiesta di appuntamento in bozza.
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);
Creazione di un appuntamento bozza da testo
Il seguente frammento di codice mostra come creare una bozza di appuntamento da testo.
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");
Personalizzare gli appuntamenti
Imposta lo stato dei partecipanti agli appuntamenti
L’API Aspose.Email per .NET ti consente di impostare lo stato dei partecipanti all’appuntamento quando si formula un messaggio di risposta. Questo aggiunge la proprietà PARTSTAT al file 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);
Personalizza l’identificatore del prodotto per iCalendar
L’API Aspose.Email per .NET consente di ottenere o impostare l’identificatore del prodotto che ha creato l’oggetto 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);
Caricamento di appuntamenti
Inoltre, il Appointment la classe può essere usata per caricare un appuntamento da un file ICS.
Carica un appuntamento in formato ICS
Per caricare un appuntamento in formato ICS, sono necessari i seguenti passaggi:
- Crea un’istanza di Appointment classe.
- Chiama il Load() metodo fornendo il percorso del file ICS.
- Leggi qualsiasi proprietà per ottenere informazioni dall’appuntamento (file ICS).
Il seguente frammento di codice mostra come caricare un appuntamento in formato 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);
Convertire ICS in MSG
L’API consente di convertire facilmente un appuntamento in un oggetto messaggio. Il seguente esempio di codice mostra come convertire una richiesta di appuntamento in un MailMessage o MapiMessage:
var appointment = Appointment.Load("appRequest.ics");
var eml = appointment.ToMailMessage();
var msg = appointment.ToMapiMessage();
Leggi più eventi da un file 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...
Scrivi più eventi in un file 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);
}
}
Determinare la versione dell’appuntamento
Per determinare la versione di un appuntamento, puoi usare il Appointment.Version proprietà del Appointment classe. Questa proprietà aiuta a determinare su quale versione si basano i loro file, garantendo l’integrazione con altri sistemi e app.
Il seguente esempio di codice mostra come implementare questa proprietà nel tuo progetto:
var app = Appointment.Load("meeting.ics");
if (app.Version == 1.0)
{
// do something
}