Administrar citas: crear y manipular, convertir ICS a MSG
Crear una cita y guardarla en disco en formato MSG o ICS
El Appointment la clase en Aspose.Email para .NET puede usarse para crear una nueva cita. En este artículo, primero creamos una cita y la guardamos en disco en formato ICS. Se requieren los siguientes pasos para crear una cita y guardarla en disco.
- Cree una instancia de la Appointment clase y inicialícela con este constructor.
- Pase los siguientes argumentos en el constructor anterior
- Ubicación
- Resumen
- Descripción
- Fecha de inicio
- Fecha de finalización
- Organizador
- Asistentes
- Llame al Save() método y especificar el nombre del archivo y el formato en los argumentos.
La cita puede abrirse en Microsoft Outlook o en cualquier programa que pueda cargar un archivo ICS. Si el archivo se abre en Microsoft Outlook, este agrega automáticamente la cita al calendario de Outlook.
El siguiente fragmento de código muestra cómo crear y guardar una cita en disco en 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.");
Crear una cita con contenido HTML
Puede especificar representaciones alternativas de la descripción del evento en diferentes tipos de contenido usando el encabezado X-ALT-DESC. Permite a los destinatarios del archivo iCalendar elegir la representación que mejor se adapte a sus necesidades. Por ejemplo, puede incluir una descripción en texto plano usando el tipo de contenido "text/plain" y una descripción en HTML usando el tipo de contenido "text/html". El encabezado X-ALT-DESC se agrega para cada representación alternativa. Para crear una cita con contenido HTML, establezca el HtmlDescription propiedad.
Pruebe el siguiente ejemplo de código para crear una cita con descripción HTML alternativa:
- Cree una nueva instancia de la clase Appointment.
- Proporcione los parámetros necesarios al constructor Appointment:
- Especifique la ubicación de la cita.
- Establezca la fecha y hora de inicio.
- Establezca la fecha y hora de finalización.
- Especifique el organizador.
- Especifique el asistente.
- Establezca el HtmlDescription propiedad del objeto de cita, indicando que la descripción está en formato HTML.
- Establezca la propiedad Description del objeto de cita a una cadena con formato HTML, encerrada dentro de una cadena multilínea:
- El marcado HTML incluye un bloque <style> que define una clase CSS llamada "text" con estilos de fuente.
- El cuerpo HTML contiene una etiqueta de párrafo <p> con la clase CSS "text", y el mensaje real de la invitación.
- El objeto de cita ahora está listo, y puede realizar más operaciones o guardarlo como un archivo 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>"
};
Crear una solicitud de cita borrador
Se mostró en nuestros artículos anteriores cómo crear y guardar una cita en formato ICS. A menudo se requiere crear una solicitud de cita en modo Borrador, de modo que la información básica se agregue y luego la misma cita Borrador se reenvíe a otros usuarios para los cambios necesarios según los usos individuales. Para guardar una cita en modo Borrador, el MethodType la propiedad de la clase Appointment debe establecerse en AppointmentMethodType.Publish. El siguiente fragmento de código muestra cómo crear una solicitud de cita en borrador.
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);
Creación de borrador de cita a partir de texto
El siguiente fragmento de código le muestra cómo crear una cita borrador a partir de texto.
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");
Personalizar citas
Establecer el estado de los participantes de los asistentes a la cita
La API Aspose.Email para .NET le permite establecer el estado de los asistentes a la cita al formular un mensaje de respuesta. Esto agrega la propiedad PARTSTAT al archivo 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);
Personalizar el identificador de producto para iCalendar
La API Aspose.Email para .NET permite obtener o establecer el identificador del producto que creó el objeto 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);
Cargando citas
Además, el Appointment la clase puede usarse para cargar una cita desde un archivo ICS.
Cargar una cita en formato ICS
Para cargar una cita en formato ICS, se requieren los siguientes pasos:
- Cree una instancia de la Appointment clase.
- Llame al Load() método proporcionando la ruta del archivo ICS.
- Lea cualquier propiedad para obtener cualquier información de la cita (archivo ICS).
El siguiente fragmento de código muestra cómo cargar una cita en 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);
Convertir ICS a MSG
La API le permite convertir fácilmente una Cita en un objeto de mensaje. El siguiente ejemplo de código muestra cómo convertir una solicitud de cita en un MailMessage o MapiMessage:
var appointment = Appointment.Load("appRequest.ics");
var eml = appointment.ToMailMessage();
var msg = appointment.ToMapiMessage();
Leer varios eventos de un archivo 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...
Escribir múltiples eventos en archivo 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);
}
}
Determinar la versión de la cita
Para determinar la versión de una cita, puede usar el Appointment.Version propiedad del Appointment clase. Esta propiedad ayuda a determinar en qué versión se basan sus archivos, garantizando la integración con otros sistemas y aplicaciones.
El siguiente ejemplo de código muestra cómo implementar esta propiedad en su proyecto:
var app = Appointment.Load("meeting.ics");
if (app.Version == 1.0)
{
// do something
}