Exchange 2010 - bestimmte Kalendereinträge Abfragen und auf einer Webseite anzeigen lassen
Guten Tag
Wir sind ein KMU mit ca. 20 Mitarbeitern.
Da sehr oft jemand Abwesend ist (Weiterbildung, 80% Wochensatz) möchten wir auf einem Bildschirm Abwesenheitseinträge von den Kalendern anzeigen lassen.
Wir verwenden eine Windows Server 2008R2 Terminalserver Infrastruktur mit Exchange 2010 und Outlook 2010.
Ziel ist es die Einträge z. Bsp. der nächsten 7 Tage abzufragen und dann auf einer HTML Seite anzeigen zu lassen.
Wie kann ich diese Abfrage machen und danach auf der Seite die Einträge als Liste anzeigen zu lassen?
Danke für die Hilfe im Voraus
Freundliche Grüsse
Renato Wirth
Wir sind ein KMU mit ca. 20 Mitarbeitern.
Da sehr oft jemand Abwesend ist (Weiterbildung, 80% Wochensatz) möchten wir auf einem Bildschirm Abwesenheitseinträge von den Kalendern anzeigen lassen.
Wir verwenden eine Windows Server 2008R2 Terminalserver Infrastruktur mit Exchange 2010 und Outlook 2010.
Ziel ist es die Einträge z. Bsp. der nächsten 7 Tage abzufragen und dann auf einer HTML Seite anzeigen zu lassen.
Wie kann ich diese Abfrage machen und danach auf der Seite die Einträge als Liste anzeigen zu lassen?
Danke für die Hilfe im Voraus
Freundliche Grüsse
Renato Wirth
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 215665
Url: https://administrator.de/forum/exchange-2010-bestimmte-kalendereintraege-abfragen-und-auf-einer-webseite-anzeigen-lassen-215665.html
Ausgedruckt am: 22.12.2024 um 02:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo Renato,
das ließe sich mit ASP.NET und dem Zugriff auf die Exchange Datenbank via Exchange EWS Managed API einfach realisieren.
Simples Beispiel für die Abfrage von Terminen aus dem Standardkalender einer Mailbox 7 Tage im Voraus via EWS mit C#:
(Das Beispiel würde nur den Subject des Termins in einer MessageBox anzeigen.)
In ASP.Net kann man dann mit den Daten eine Webseite generieren.
Hinweis: Die Funktion CertificateValidationCallBack ist nur für einen Test des Codes in einer Umgebung mit einem selbst erstellten Zertifikat nötig.
Grüße Uwe
das ließe sich mit ASP.NET und dem Zugriff auf die Exchange Datenbank via Exchange EWS Managed API einfach realisieren.
Simples Beispiel für die Abfrage von Terminen aus dem Standardkalender einer Mailbox 7 Tage im Voraus via EWS mit C#:
(Das Beispiel würde nur den Subject des Termins in einer MessageBox anzeigen.)
using System;
using System.Net;
using System.Net.Security;
using System.Windows.Forms;
using Microsoft.Exchange.WebServices;
using Microsoft.Exchange.WebServices.Data;
using System.Security.Cryptography.X509Certificates;
private void fetchAppointments (){
ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.Url = new Uri("https://server.domain.local/EWS/Exchange.asmx");
service.Credentials = new WebCredentials("[USERNAME]", "[PASSWORT]","[DOMAIN]");
CalendarView view = new CalendarView(DateTime.Today.AddDays(-1), DateTime.Today.AddDays(7));
FindItemsResults<Appointment> apps = service.FindAppointments(WellKnownFolderName.Calendar,view);
foreach(Appointment app in apps){
MessageBox.Show(app.Subject);
}
}
private static bool CertificateValidationCallBack(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}
Hinweis: Die Funktion CertificateValidationCallBack ist nur für einen Test des Codes in einer Umgebung mit einem selbst erstellten Zertifikat nötig.
Grüße Uwe
Noch als Ergänzung hier ein Beispiel-Projekt mit ASP.NET:
Als Referenz im Projekt muss noch die im EWS-API zur Verfügung gestellte DLLMicrosoft.Exchange.WebServices.dll
hinzugefügt werden. Diese kann hier heruntergeladen werden.Anzupassen sind im Codebehind-File natürlich noch folgende Dinge:
- Die Exchange-Server Version bei Bedarf anpassen in Zeile 19 (Exchange2010_SP1 / Exchange2010_SP2 / ...)
- Servername in der EWS-URL in Zeile 20
- [USERNAME] , [PASSWORD], [DOMAIN] des Users auf dessen Kalender im Store zugegriffen werden soll in Zeile 21
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
</script>
<style type="text/css">
.style2
{
width: 110px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="myContent">
<asp:DataList ID="DataList1" runat="server"
CellPadding="3" BackColor="#DEBA84" BorderColor="#DEBA84"
BorderStyle="None" BorderWidth="1px" CellSpacing="2" GridLines="Both"
RepeatColumns="3" RepeatDirection="Horizontal" ShowFooter="False"
ShowHeader="False" ItemStyle-VerticalAlign="Top">
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<ItemStyle BackColor="#FFF7E7" ForeColor="#8C4510" VerticalAlign="Top" />
<ItemTemplate>
<div style="padding: 10px; width: 342px; font-weight: bold;">
<table style="width:100%;">
<tr>
<td class="style2">
Betreff:</td>
<td>
<asp:Label ID="lblTerminname" runat="server" ForeColor="#0033CC"
Text='<%# Eval("Terminname") %>'></asp:Label>
</td>
</tr>
<tr>
<td class="style2">
Ort:
</td>
<td>
<asp:Label ID="lblOrt" runat="server" ForeColor="#0033CC"
Text='<%# Eval("Ort") %>'></asp:Label>
</td>
</tr>
<tr>
<td class="style2">
Startzeit:
</td>
<td>
<asp:Label ID="lblStartzeit" runat="server" ForeColor="#0033CC"
Text='<%# Eval("Startzeit") %>'></asp:Label>
</td>
</tr>
<tr>
<td class="style2">
Endzeit:</td>
<td>
<asp:Label ID="lblEndzeit" runat="server" ForeColor="#0033CC"
Text='<%# Eval("Endzeit") %>'></asp:Label>
</td>
</tr>
<tr>
<td class="style2">
Kommentar:</td>
<td>
<asp:Label ID="lblKommentar" runat="server" ForeColor="Red"
Text='<%# Eval("Kommentar") %>'></asp:Label>
</td>
</tr>
</table>
</div>
</ItemTemplate>
<SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
</asp:DataList>
</div>
</form>
</body>
</html>
Codebehind: "Default.aspx.cs"
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Exchange.WebServices;
using Microsoft.Exchange.WebServices.Data;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.Url = new Uri("https://server.domain.local/EWS/Exchange.asmx");
service.Credentials = new WebCredentials("[USERNAME]", "[PASSWORD]", "[DOMAIN]");
CalendarView view = new CalendarView(DateTime.Today.AddDays(-1), DateTime.Today.AddDays(7));
FindItemsResults<Appointment> apps = service.FindAppointments(WellKnownFolderName.Calendar, view);
DataTable dt = new DataTable("Termine");
dt.Columns.Add("Terminname");
dt.Columns.Add("Ort");
dt.Columns.Add("Startzeit");
dt.Columns.Add("Endzeit");
dt.Columns.Add("Kommentar");
foreach (Appointment app in apps)
{
app.Load();
DataRow dr = dt.NewRow();
dr.SetField("Terminname", app.Subject);
dr.SetField("Ort", app.Location);
dr.SetField("Startzeit", app.Start.ToString());
dr.SetField("Endzeit", app.End.ToString());
dr.SetField("Kommentar", app.Body.Text);
dt.Rows.Add(dr);
}
dt.AcceptChanges();
DataList1.DataSource = dt;
DataList1.DataBind();
}
private static bool CertificateValidationCallBack(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}
}
Noch als Tipp für eure Entwickler bzw. Exchange Admins:
Sollte beim Zugriff auf die EWS-Seite ein Fehler auftauchen das die Seite nicht verfügbar ist, kann das daran liegen das die Formularauthentifizierung für das virtuelle EWS-Verzeichnis im IIS aktiviert ist. Dort sollten nur Anonyme Authentifizierung und Windows Authentifizierung aktiviert, und alle anderen Methoden deaktiviert sein!
Wünsche euch viel Erfolg !
Grüße Uwe