Compartir información del calendario por correo electrónico
En este ejemplo se muestra cómo compartir información de un calendario por correo electrónico con el formato iCalendar.
Ejemplo
El formato iCalendar le permite enviar elementos a Outlook o a otros clientes que no son de Outlook a través de protocolos y formatos de correo estándar de Internet. En el ejemplo de código utiliza el objeto CalendarSharing que admite la exportación de información de una carpeta de calendario en el formato iCalendar.
El ejemplo de código llama primero a GetCalendarExporter en la carpeta de calendario predeterminada para obtener un objeto CalendarSharing. Después establece las propiedades del objeto CalendarSharing para especificar criterios para la exportación, como el intervalo de fechas de información del calendario, si se deben incluir datos adjuntos y detalles de las citas que están marcados como "privada".
Para enviar la información del calendario por correo electrónico, el ejemplo de código llama al método ForwardAsICal del objeto CalendarSharing.
Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción Imports o using no deben producirse directamente antes de las funciones en el ejemplo de código, pero deben agregarse antes de la declaración de clase pública. Las líneas siguientes de código muestran cómo realizar la importación y la asignación en Visual Basic y 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);
}