Freigeben von Kalenderinformationen per E-Mail
In diesem Beispiel wird gezeigt, wie Informationen aus einem Kalender mithilfe einer E-Mail-Nachricht im iCalendar-Format freigegeben werden.
Beispiel
Das iCalendar-Format ermöglicht das Senden von Elementen an andere Outlook- oder Nicht-Outlook-Clients über Standard-Internet-Mailformate und -Protokolle. Im Codebeispiel wird das CalendarSharing -Objekt verwendet, das den Export von Informationen aus einem Kalenderordner in das iCalendar-Format unterstützt.
Zuerst wird GetCalendarExporter für den standardmäßigen Kalenderordner aufgerufen, um ein CalendarSharing-Objekt abzurufen. Dann werden die Eigenschaften des CalendarSharing-Objekts festgelegt, um die Exportkriterien, wie Datumsbereich der Kalenderinformation, die Zulässigkeit von Anhängen und Einzelheiten zu Besprechungen anzugeben, die als privat gekennzeichnet sind.
Damit die Kalenderinformation dann per E-Mail gesendet wird, wird durch das Codebeispiel die ForwardAsICal-Methode des CalendarSharing-Objekts aufgerufen.
Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die Anweisung Imports oder using darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgenden Codezeilen zeigen, wie Sie den Import und die Zuweisung in Visual Basic und C# vornehmen.
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);
}