Отправка сведений календаря по электронной почте
В этом примере показывается, как обмениваться сведениями из календаря по электронной почте в формате iCalendar.
Пример
Формат iCalendar позволяет отправлять элементы другим клиентам Outlook или других почтовых программ, используя стандартные форматы и протоколы почты Интернета. В примере кода используется объект CalendarSharing , поддерживающий экспорт данных из папки календаря в формат iCalendar.
Сначала в коде для папки календаря по умолчанию вызывается метод GetCalendarExporter , чтобы получить объект CalendarSharing. Затем задаются свойства объекта CalendarSharing, чтобы определить условия экспорта, например диапазон дат для данных календаря, необходимость включения вложений и данных встреч, помеченных как "закрытые".
Чтобы отправить сведения из календаря по электронной почте, в коде примера вызывается метод ForwardAsICal объекта CalendarSharing.
Если для тестирования этого примера кода вы используете Visual Studio, сначала добавьте ссылку на компонент библиотеки объектов Microsoft Outlook 15.0 и укажите переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция Imports или using не должна идти непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующих строках кода показано, как выполнить импорт и назначение в Visual Basic и C#.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub SendNextWeekToAddress(ByVal sendToAddresses As String)
If String.IsNullOrEmpty(sendToAddresses) Then
Throw New ArgumentException( _
"Parameter must contain a value.", "sendToAddress")
End If
Dim calendar As Outlook.Folder = TryCast( _
Application.Session.GetDefaultFolder( _
Outlook.OlDefaultFolders.olFolderCalendar), Outlook.Folder)
Dim exporter As Outlook.CalendarSharing = calendar.GetCalendarExporter()
'' Set the properties for the export
exporter.CalendarDetail = Outlook.OlCalendarDetail.olFullDetails
exporter.IncludeAttachments = True
exporter.IncludePrivateDetails = False
exporter.RestrictToWorkingHours = False
exporter.StartDate = DateTime.Today.Date
exporter.EndDate = DateTime.Today.Date.AddDays(7)
'' Create a new mail item
Dim calendarMail As Outlook.MailItem = exporter.ForwardAsICal _
(Outlook.OlCalendarMailFormat. _
olCalendarMailFormatDailySchedule)
calendarMail.To = sendToAddresses
calendarMail.Send()
calendarMail.Display()
End Sub
private void SendNextWeekToAddress(string sendToAddresses)
{
if (string.IsNullOrEmpty(sendToAddresses))
throw new ArgumentException(
"sendToAddress","Parameter must contain a value.");
Outlook.Folder calendar =
Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderCalendar)
as Outlook.Folder;
Outlook.CalendarSharing exporter = calendar.GetCalendarExporter();
// Set the properties for the export
exporter.CalendarDetail = Outlook.OlCalendarDetail.olFullDetails;
exporter.IncludeAttachments = true;
exporter.IncludePrivateDetails = false;
exporter.RestrictToWorkingHours = false;
exporter.StartDate = DateTime.Today.Date;
exporter.EndDate = DateTime.Today.Date.AddDays(7);
// Create a new mail item
Outlook.MailItem calendarMail =
exporter.ForwardAsICal(Outlook.OlCalendarMailFormat.
olCalendarMailFormatDailySchedule);
calendarMail.To = sendToAddresses;
((Outlook.MailItemClass)calendarMail).Send();
((Outlook.MailItemClass)calendarMail).Display(Type.Missing);
}