Gestion des rendez‑vous : création et manipulation, conversion d’ICS en MSG
Créer un rendez‑vous et l’enregistrer sur le disque au format MSG ou ICS
Le Appointment La classe dans Aspose.Email pour .NET peut être utilisée pour créer un nouveau rendez‑vous. Dans cet article, nous créons d’abord un rendez‑vous et l’enregistrons sur le disque au format ICS. Les étapes suivantes sont nécessaires pour créer un rendez‑vous et l’enregistrer sur un disque.
- Créez une instance de la Appointment classe et l’initialiser avec ce constructeur.
- Passez les arguments suivants dans le constructeur ci‑dessus
- Lieu
- Résumé
- Description
- Date de début
- Date de fin
- Organisateur
- Participants
- Appelez le Save() méthode et spécifier le nom du fichier ainsi que le format dans les arguments.
Le rendez‑vous peut être ouvert dans Microsoft Outlook ou tout programme capable de charger un fichier ICS. Si le fichier est ouvert dans Microsoft Outlook, il ajoute automatiquement le rendez‑vous dans le calendrier Outlook.
L’extrait de code suivant montre comment créer et enregistrer un rendez‑vous sur le disque au format ICS ou 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.");
Créer un rendez‑vous avec du contenu HTML
Vous pouvez spécifier des représentations alternatives de la description de l’événement dans différents types de contenu à l’aide de l’en‑tête X-ALT-DESC. Cela permet aux destinataires du fichier iCalendar de choisir la représentation qui leur convient le mieux. Par exemple, vous pouvez inclure une description en texte brut avec le type de contenu "text/plain" et une description HTML avec le type de contenu "text/html". L’en‑tête X-ALT-DESC est ajouté pour chaque représentation alternative. Pour créer un rendez‑vous avec du contenu HTML, définissez le HtmlDescription propriété.
Essayez l’exemple de code suivant pour créer un rendez‑vous avec une description HTML alternative :
- Créez une nouvelle instance de la classe Appointment.
- Fournissez les paramètres nécessaires au constructeur Appointment :
- Spécifiez le lieu du rendez‑vous.
- Définissez la date et l’heure de début.
- Définissez la date et l’heure de fin.
- Spécifiez l’organisateur.
- Spécifiez le participant.
- Définissez le HtmlDescription propriété de l’objet rendez‑vous, indiquant que la description est au format HTML.
- Définissez la propriété Description de l’objet rendez‑vous sur une chaîne formatée en HTML, encadrée par une chaîne multilignes :
- Le balisage HTML comprend un bloc <style> définissant une classe CSS nommée "text" avec des styles de police.
- Le corps HTML contient une balise paragraphe <p> avec la classe CSS "text", ainsi que le message d’invitation réel.
- L’objet rendez‑vous est maintenant prêt, et vous pouvez effectuer d’autres opérations ou l’enregistrer sous forme de fichier 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>"
};
Créer une demande de rendez‑vous brouillon
Nos articles précédents ont montré comment créer et enregistrer un rendez‑vous au format ICS. Il est souvent nécessaire de créer une demande de rendez‑vous en mode Brouillon, afin que les informations de base soient ajoutées, puis que le même rendez‑vous brouillon soit transmis à d’autres utilisateurs pour les modifications nécessaires selon les besoins individuels. Pour enregistrer un rendez‑vous en mode Brouillon, le MethodType la propriété de la classe Appointment doit être définie sur AppointmentMethodType.Publish. L’extrait de code suivant montre comment créer une demande de rendez‑vous en brouillon.
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);
Création d’un rendez‑vous brouillon à partir du texte
Le fragment de code suivant montre comment créer un rendez‑vous brouillon à partir de texte.
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");
Personnaliser les rendez‑vous
Définir le statut des participants aux rendez‑vous
L’API Aspose.Email pour .NET vous permet de définir le statut des participants à un rendez‑vous lors de la rédaction d’un message de réponse. Cela ajoute la propriété PARTSTAT au fichier 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);
Personnaliser l’identifiant du produit pour iCalendar
L’API Aspose.Email pour .NET permet d’obtenir ou de définir l’identifiant du produit qui a créé l’objet 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);
Chargement des rendez‑vous
De plus, le Appointment la classe peut être utilisée pour charger un rendez‑vous depuis un fichier ICS.
Charger un rendez‑vous au format ICS
Pour charger un rendez‑vous au format ICS, les étapes suivantes sont requises :
- Créez une instance de la Appointment classe.
- Appelez le Load() méthode en fournissant le chemin du fichier ICS.
- Lisez n’importe quelle propriété pour obtenir toute information du rendez‑vous (fichier ICS).
L’extrait de code suivant montre comment charger un rendez‑vous au format 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 en MSG
L’API vous permet de convertir facilement un rendez‑vous en objet message. L’exemple de code suivant montre comment convertir une demande de rendez‑vous en MailMessage ou MapiMessage :
var appointment = Appointment.Load("appRequest.ics");
var eml = appointment.ToMailMessage();
var msg = appointment.ToMapiMessage();
Lire plusieurs événements depuis un fichier 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...
Écrire plusieurs événements dans un fichier 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);
}
}
Déterminer la version du rendez‑vous
Pour déterminer la version d’un rendez‑vous, vous pouvez utiliser le Appointment.Version propriété du Appointment classe. Cette propriété aide à déterminer la version sur laquelle leurs fichiers sont basés, garantissant l’intégration avec d’autres systèmes et applications.
L’exemple de code suivant montre comment implémenter cette propriété dans votre projet :
var app = Appointment.Load("meeting.ics");
if (app.Version == 1.0)
{
// do something
}