Arbeta med Outlook-kalenderposter
Arbeta med MapiCalendar
Aspose.Email’s MapiCalendar klassen erbjuder metoder och attribut för att ställa in olika egenskaper för ett kalenderobjekt. Denna artikel ger kodexempel för:
- Arbeta med MapiCalendar
- Ställa in påminnelse med det skapade mötet
- Konvertera Appointment EML till MSG med HTML-kropp
Skapa och spara kalenderobjekt
Följande kodsnutt visar hur du skapar och sparar ett kalenderobjekt i ICS-format.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";
Calendar cal = Calendar.getInstance();
cal.set(2012, Calendar.OCTOBER, 2, 13, 0, 0);
Date startDate = cal.getTime();
cal.set(2012, Calendar.OCTOBER, 2, 14, 0, 0);
Date endDate = cal.getTime();
MapiCalendar calendar = new MapiCalendar("LAKE ARGYLE WA 6743",
"Appointment",
"This is a very important meeting :)",
startDate,
endDate);
calendar.save(dataDir + "CalendarItem_out.ics", AppointmentSaveFormat.Ics);
Spara kalenderobjektet som MSG
Följande kodsnutt visar hur du sparar kalenderobjektet som MSG.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
calendar.save(dataDir + "CalendarItemAsMSG_out.Msg", AppointmentSaveFormat.Msg);
Ställa in produkt-ID när ett kalenderobjekt sparas till ICS
Den ProductIdentifier egenskap hos MapiCalendarIcsSaveOptions klassen används för att spara ett MAPI-kalenderobjekt till en iCalendar (ICS)-fil och bevara originaldatum och -tid samt en anpassad produktidentifierare. Egenskapen specificerar identifieraren för produkten som skapade iCalendar-objektet.
Följande kodexempel visar hur man arbetar med iCalendar (ICS)-data i ett MAPI-kalenderobjekt:
MapiCalendarIcsSaveOptions icsSaveOptions = new MapiCalendarIcsSaveOptions();
icsSaveOptions.setKeepOriginalDateTimeStamp(true);
icsSaveOptions.setProductIdentifier("Foo Ltd");
mapiCalendar.save("my.ics", icsSaveOptions);
Lägga till displaypåminnelse i en kalender
Följande kodsnutt visar hur du lägger till en displaypåminnelse i en kalender.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";
Calendar jCalendar = Calendar.getInstance();
jCalendar.add(Calendar.HOUR, 1);
Date startDate = jCalendar.getTime();
Date endDate = jCalendar.getTime();
MailAddressCollection attendees = new MailAddressCollection();
attendees.addItem(new MailAddress("attendee@domain.com", "Attendee"));
// Create Appointment
Appointment app = new Appointment("Home",
startDate,
endDate,
new MailAddress("organizer@domain.com", "Organizer"),
attendees);
MailMessage msg = new MailMessage();
msg.addAlternateView(app.requestApointment());
MapiMessage mapi = MapiMessage.fromMailMessage(msg);
MapiCalendar calendar = (MapiCalendar) mapi.toMapiMessageItem();
// Set calendar Properties
calendar.setReminderSet(true);
calendar.setReminderDelta(5); // 45 min before start of event
String savedFile = (dataDir + "calendarWithDisplayReminder.ics");
calendar.save(savedFile, AppointmentSaveFormat.Ics);
Lägga till ljudpåminnelse i en kalender
Följande kodsnutt visar hur du lägger till en ljudpåminnelse i en kalender.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";
Calendar jCalendar = Calendar.getInstance();
jCalendar.add(Calendar.HOUR, 1);
Date startDate = jCalendar.getTime();
Date endDate = jCalendar.getTime();
MailAddressCollection attendees = new MailAddressCollection();
attendees.addItem(new MailAddress("attendee@domain.com", "Attendee"));
Appointment app = new Appointment("Home",
startDate,
endDate,
new MailAddress("organizer@domain.com", "Organizer"),
attendees);
MailMessage msg = new MailMessage();
msg.addAlternateView(app.requestApointment());
MapiMessage mapi = MapiMessage.fromMailMessage(msg);
MapiCalendar cal = (MapiCalendar) mapi.toMapiMessageItem();
cal.setReminderSet(true);
cal.setReminderDelta(58); // 58 min before start of event
cal.setReminderFileParameter(dataDir + "Alarm01.wav");
String savedFile = dataDir + "calendarWithAudioReminder_out.ics";
cal.save(savedFile, AppointmentSaveFormat.Ics);
Lägg till/återställ bilagor från kalenderfiler
Följande kodsnutt visar hur du lägger till/återställer bilagor från kalenderfiler.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";
Calendar jCalendar = Calendar.getInstance();
jCalendar.add(Calendar.HOUR, 1);
Date startDate = jCalendar.getTime();
Date endDate = jCalendar.getTime();
String[] files = new String[3];
files[0] = "attachment_1.doc";
files[1] = "download.png";
files[2] = "Desert.jpg";
MailAddressCollection attendees = new MailAddressCollection();
attendees.addItem(new MailAddress("attendee@domain.com", "Attendee"));
Appointment app1 = new Appointment("Home",
startDate,
endDate,
new MailAddress("organizer@domain.com", "Organizer"),
attendees);
for (String file : files) {
app1.getAttachments().addItem(new Attachment(dataDir + file));
}
app1.save(dataDir + "appWithAttachments_out.ics", AppointmentSaveFormat.Ics);
Appointment app2 = Appointment.load(dataDir + "appWithAttachments_out.ics");
System.out.println(app2.getAttachments().size());
for (Attachment att : app2.getAttachments())
System.out.println(att.getName());
Status för mottagare från en mötesförfrågan
Följande kodsnutt visar hur du hämtar mottagarnas status från en mötesförfrågan.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String fileName = "outlook/test.msg";
MapiMessage message = MapiMessage.fromFile(fileName);
for (MapiRecipient recipient : message.getRecipients()) {
System.out.println(recipient.getRecipientTrackStatus());
}
Ställ in kalendermötesstatus explicit
Aspose.Email låter dig ställa in tillståndet för en MapiCalendar objekt explicit, vilket åsidosätter standardbeteendet. setStateForced metoden ger bättre kontroll över kalenderhändelsers tillstånd, särskilt vid hantering av mottagna mötesförfrågningar. Som standard, när ett möte skapas, är dess tillstånd MapiCalendarState.Meeting. När den mottas i mottagarens inkorg ändras den automatiskt till MapiCalendarState.Received, och dess meddelandeklass uppdateras till IPM.Schedule.Meeting.Request. Använd SetStateForced tillåter manuell inställning av tillståndet till Received, vilket kan vara användbart för att bevara arrangörsinformation när kalendern sparas som en MSG-fil. Detta kan dock förhindra korrekt vidarebefordran eller omsändning av mötet.
Följande kodexempel hjälper dig att implementera den här funktionen:
Calendar c = Calendar.getInstance();
c.set(2024, Calendar.MAY, 10, 12, 30, 0);
Date startDate = c.getTime();
c.set(2024, Calendar.MAY, 10, 13, 30, 0);
Date endDate = c.getTime();
MapiCalendar appointment = new MapiCalendar(
"LAKE ARGYLE WA 6743",
"Appointment",
"This is a very important meeting :)",
startDate,
endDate);
MapiElectronicAddress organizer = new MapiElectronicAddress();
organizer.setEmailAddress("test@aaa.com");
organizer.setDisplayName("test display Name");
appointment.setOrganizer(organizer);
appointment.setStateForced(MapiCalendarState.Meeting | MapiCalendarState.Received);
appointment.save("appointment.msg", AppointmentSaveFormat.Msg);
Skapa MapiCalendarTimeZone från standardtidszon
Följande kodsnutt visar hur du skapar MapiCalendarTimeZone från den standardtidszonen.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiCalendarTimeZone timeZone = new MapiCalendarTimeZone("Eastern Standard Time");
Ställa in påminnelse med det skapade mötet
En påminnelse kan läggas till när ett möte skapas. Dessa alarm kan triggas baserat på olika kriterier, t.ex. n minuter före schemaläggningens start, upprepa n gånger med n intervall. Olika taggar kan användas för att skapa dessa triggrar i skriptet som omges av BEGIN:VALARM och END:VALARM i ett möte. Det finns ett antal varianter för hur påminnelsen kan ställas in för ett möte.
Ställa in en påminnelse genom att lägga till taggar
Följande kodsnutt visar hur du ställer in en påminnelse genom att lägga till taggar.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = RunExamples.getDataDir_Outlook();
long MIN_MS = 60 * 1000;
long HR_MS = 60 * MIN_MS;
long DAY_MS = 24 * HR_MS;
String location = "Meeting Location: Room 5";
Date startDate = getDate(1997, 3, 18, 18, 30, 00);
Date endDate = getDate(1997, 3, 18, 19, 30, 00);
MailAddress organizer = new MailAddress("aaa@amail.com", "Organizer");
MailAddressCollection attendees = new MailAddressCollection();
attendees.addItem(new MailAddress("bbb@bmail.com", "First attendee"));
Appointment target = new Appointment(location, startDate, endDate, organizer, attendees);
// Audio alarm that will sound at a precise time and
// Repeat 4 more times at 15 minute intervals:
AppointmentReminder audioReminder = new AppointmentReminder();
audioReminder.setTrigger(new ReminderTrigger(getDate(1997, 3, 17, 13, 30, 0)));
audioReminder.setRepeat(4);
audioReminder.setDuration(new ReminderDuration(15 * MIN_MS));
audioReminder.setAction(ReminderAction.Audio);
ReminderAttachment attach = new ReminderAttachment(new URI("ftp://Host.com/pub/sounds/bell-01.aud"));
audioReminder.getAttachments().addItem(attach);
target.getReminders().addItem(audioReminder);
// Display alarm that will trigger 30 minutes before the
// Scheduled start of the event it is
// Associated with and will repeat 2 more times at 15 minute intervals:
AppointmentReminder displayReminder = new AppointmentReminder();
ReminderDuration dur = new ReminderDuration(-30 * MIN_MS);
displayReminder.setTrigger(new ReminderTrigger(dur, ReminderRelated.Start));
displayReminder.setRepeat(2);
displayReminder.setDuration(new ReminderDuration(15 * MIN_MS));
displayReminder.setAction(ReminderAction.Display);
displayReminder.setDescription("Breakfast meeting with executive team at 8:30 AM EST");
target.getReminders().addItem(displayReminder);
// Email alarm that will trigger 2 days before the
// Scheduled due date/time. It does not
// Repeat. The email has a subject, body and attachment link.
AppointmentReminder emailReminder = new AppointmentReminder();
ReminderDuration dur1 = new ReminderDuration(-2 * DAY_MS);
emailReminder.setTrigger(new ReminderTrigger(dur1, ReminderRelated.Start));
ReminderAttendee attendee = new ReminderAttendee("john_doe@host.com");
emailReminder.getAttendees().addItem(attendee);
emailReminder.setAction(ReminderAction.Email);
emailReminder.setSummary("REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING");
emailReminder.setDescription("A draft agenda needs to be sent out to the attendees to the weekly managers meeting (MGR-LIST). Attached is a pointer the document template for the agenda file.");
ReminderAttachment attach1 = new ReminderAttachment(new URI("http://Host.com/templates/agenda.doc"));
emailReminder.getAttachments().addItem(attach1);
target.getReminders().addItem(emailReminder);
// Procedural alarm that will trigger at a precise date/time
// And will repeat 23 more times at one hour intervals. The alarm will
// Invoke a procedure file.
AppointmentReminder procReminder = new AppointmentReminder();
procReminder.setTrigger(new ReminderTrigger(getDate(1998, 1, 1, 5, 0, 0)));
procReminder.setRepeat(23);
procReminder.setDuration(new ReminderDuration(1 * DAY_MS));
procReminder.setAction(ReminderAction.Procedure);
ReminderAttachment attach2 = new ReminderAttachment(new URI("ftp://Host.com/novo-procs/felizano.exe"));
procReminder.getAttachments().addItem(attach2);
target.getReminders().addItem(procReminder);
target.save(dataDir + "savedFile_out.ics");
Konvertera Appointment EML till MSG med HTML-kropp
Sedan version 19.3 erbjuder Aspose.Email möjligheten att konvertera Appointment EML till MSG samtidigt som HTML-kroppen i mötet behålls. Aspose.Email tillhandahåller en MapiConversionOptions.ForcedRtfBodyForAppointment egenskap som har standardvärdet true. När värdet på MapiConversionOptions.ForcedRtfBodyForAppointment är satt till true, konverteras möteskroppen till RTF-format. För att behålla möteskroppens format i HTML, sätt värdet på MapiConversionOptions.ForcedRtfBodyForAppointment till false.
Följande exempel demonstrerar användningen av MapiConversionOptions.ForcedRtfBodyForAppointment egenskap för att behålla möteskroppens format i HTML-format.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";
MailMessage mailMessage = MailMessage.load(dataDir + "TestAppointment.eml");
MapiConversionOptions conversionOptions = new MapiConversionOptions();
conversionOptions.setFormat(OutlookMessageFormat.Unicode);
// default value for ForcedRtfBodyForAppointment is true
conversionOptions.setForcedRtfBodyForAppointment(false);
MapiMessage mapiMessage = MapiMessage.fromMailMessage(mailMessage, conversionOptions);
if (mapiMessage.getBodyType() == BodyContentType.Html) {
System.out.println("Body Type: Html");
} else if (mapiMessage.getBodyType() == BodyContentType.Rtf) {
System.out.println("Body Type: Rtf");
}
mapiMessage.save(dataDir + "TestAppointment_out.msg");