Outlook Takvim Öğeleriyle Çalışma
MapiCalendar ile Çalışma
Aspose.Email’in MapiCalendar sınıf, bir takvim öğesinin çeşitli özelliklerini ayarlamak için yöntemler ve öznitelikler sunar. Bu makale şu amaçlar için kod örnekleri sağlar:
- MapiCalendar ile Çalışma
- Oluşturulan Randevu ile Hatırlatıcı Ayarlama
- HTML Gövdesiyle Randevu EML’yi MSG’ye Dönüştür
Takvim Öğeleri Oluşturma ve Kaydetme
Aşağıdaki kod parçacığı, bir takvim öğesini ICS formatında nasıl oluşturup kaydedeceğinizi gösterir.
// 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);
Takvim Öğesini MSG Olarak Kaydetme
Aşağıdaki kod parçacığı, takvim öğesini MSG olarak nasıl kaydedeceğinizi gösterir.
// 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);
Takvim Öğesini ICS’ye Kaydederken Ürün Kimliği Ayarlama
Bu ProductIdentifier özellik MapiCalendarIcsSaveOptions sınıf, orijinal tarih ve saat bilgilerini ve özel bir ürün tanımlayıcısını koruyarak bir MAPI takvim öğesini iCalendar (ICS) dosyasına kaydetmek için kullanılır. Özellik, iCalendar nesnesini oluşturan ürünün tanımlayıcısını belirler.
Aşağıdaki kod örneği, bir MAPI takvim nesnesi içinde iCalendar (ICS) verileriyle nasıl çalışılacağını gösterir:
MapiCalendarIcsSaveOptions icsSaveOptions = new MapiCalendarIcsSaveOptions();
icsSaveOptions.setKeepOriginalDateTimeStamp(true);
icsSaveOptions.setProductIdentifier("Foo Ltd");
mapiCalendar.save("my.ics", icsSaveOptions);
Takvime Görüntülü Hatırlatıcı Ekleme
Aşağıdaki kod parçacığı, takvime görüntülü hatırlatıcı eklemenin nasıl yapılacağını gösterir.
// 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);
Takvime Sesli Hatırlatıcı Ekleme
Aşağıdaki kod parçacığı, takvime sesli hatırlatıcı eklemenin nasıl yapılacağını gösterir.
// 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);
Takvim Dosyalarından Eklenti Ekleme/Geri Getirme
Aşağıdaki kod parçacığı, takvim dosyalarından ekleri ekleme/geri getirme nasıl yapılır gösterir.
// 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());
Toplantı İsteğinden Alıcıların Durumu
Aşağıdaki kod parçacığı, bir toplantı isteğinden alıcıların durumunu nasıl alacağınızı gösterir.
// 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());
}
Takvim Randevu Durumunu Açıkça Ayarlama
Aspose.Email, bir MapiCalendar nesnesi açıkça, varsayılan davranışı geçersiz kılar. setStateForced yöntemi, özellikle alınan toplantı isteklerini işlerken takvim etkinlik durumları üzerinde daha iyi kontrol sağlar. Varsayılan olarak, bir toplantı oluşturulduğunda durumu MapiCalendarState.Meeting. Alıcıların gelen kutusuna alındığında, otomatik olarak şu şekle değişir MapiCalendarState.Received, ve mesaj sınıfı şu şekilde güncellenir IPM.Schedule.Meeting.Request. Kullanarak SetStateForced Durumu Received olarak manuel olarak ayarlamaya izin verir, bu da takvimi MSG dosyası olarak kaydederken organizatör bilgilerini korumak için faydalı olabilir. Ancak bu, toplantının doğru yönlendirilmesini veya yeniden gönderilmesini engelleyebilir.
Aşağıdaki kod örneği bu özelliği uygulamanıza yardımcı olacaktır:
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);
Standart Zaman Diliminden MapiCalendarTimeZone Oluşturma
Aşağıdaki kod parçacığı nasıl oluşturulacağını gösterir MapiCalendarTimeZone standart Zaman Diliminden.
// 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");
Oluşturulan Randevu ile Hatırlatıcı Ayarlama
Bir randevu oluşturulduğunda bir hatırlatıcı eklenebilir. Bu alarmlar, plan başlamadan n dakika önce gibi çeşitli kriterlere göre tetiklenebilir, n aralıklarla n kez tekrarlanabilir. Farklı etiketler, randevu içindeki BEGIN:VALARM ve END:VALARM ile çevrili komut dosyasında bu tetikleyicileri oluşturmak için kullanılabilir. Hatırlatıcının bir randevuya ayarlanabileceği çeşitli varyantlar bulunmaktadır.
Etiket Ekleyerek Hatırlatıcı Ayarlama
Aşağıdaki kod parçacığı, etiket ekleyerek bir hatırlatıcı nasıl ayarlanır gösterir.
// 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");
HTML Gövdesiyle Randevu EML’yi MSG’ye Dönüştür
19.3 sürümünden itibaren, Aspose.Email, randevu EML dosyasını MSG’ye dönüştürürken HTML gövdesini koruma yeteneği sunar. Aspose.Email bir MapiConversionOptions.ForcedRtfBodyForAppointment özellik, varsayılan değeri true. olan. Değeri MapiConversionOptions.ForcedRtfBodyForAppointment true olarak ayarlandığında, randevu gövdesi RTF biçimine dönüştürülür. Randevu gövdesi formatının HTML olarak kalmasını sağlamak için, değerini ayarlayın MapiConversionOptions.ForcedRtfBodyForAppointment false olarak
Aşağıdaki örnek kullanılanı göstermektedir MapiConversionOptions.ForcedRtfBodyForAppointment randevu gövde formatının HTML biçiminde kalmasını sağlayan özellik.
// 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");