Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Exchange 2010 - bestimmte Kalendereinträge Abfragen und auf einer Webseite anzeigen lassen

Mitglied: Pronato

Pronato (Level 1) - Jetzt verbinden

30.08.2013 um 11:04 Uhr, 9548 Aufrufe, 3 Kommentare, 2 Danke

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
Mitglied: colinardo
30.08.2013, aktualisiert um 13:35 Uhr
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.)
01.
using System;
02.
using System.Net;
03.
using System.Net.Security;
04.
using System.Windows.Forms;
05.
using Microsoft.Exchange.WebServices;
06.
using Microsoft.Exchange.WebServices.Data;
07.
using System.Security.Cryptography.X509Certificates;
08.

09.
private void fetchAppointments (){
10.
  ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
11.
  ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
12.
  service.Url = new Uri("https://server.domain.local/EWS/Exchange.asmx");
13.
  service.Credentials = new WebCredentials("[USERNAME]", "[PASSWORT]","[DOMAIN]");
14.
  CalendarView view = new CalendarView(DateTime.Today.AddDays(-1), DateTime.Today.AddDays(7));
15.
  FindItemsResults<Appointment> apps = service.FindAppointments(WellKnownFolderName.Calendar,view);
16.

17.
  foreach(Appointment app in apps){
18.
         MessageBox.Show(app.Subject);
19.
  }
20.
}
21.
private static bool CertificateValidationCallBack(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
22.
{
23.
     return true;
24.
}
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
Bitte warten ..
Mitglied: Pronato
30.08.2013 um 13:28 Uhr
Hallo Uwe

Danke für die Antwort.
Ich schaue das mal mit unserer Programmierabteilung an.

Freundliche Grüsse

Renato Wirth
Bitte warten ..
Mitglied: colinardo
30.08.2013, aktualisiert um 20:47 Uhr

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 DLL Microsoft.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
01.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
02.

03.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04.

05.
<html xmlns="http://www.w3.org/1999/xhtml">
06.
<head runat="server">
07.
    <title></title>
08.
    <script language="javascript" type="text/javascript">
09.
    </script>
10.
    <style type="text/css">
11.
        .style2
12.
        {
13.
            width: 110px;
14.
        }
15.
    </style>
16.
</head>
17.
<body>
18.
    <form id="form1" runat="server">
19.
    <div id="myContent">
20.
        <asp:DataList ID="DataList1" runat="server"
21.
            CellPadding="3" BackColor="#DEBA84" BorderColor="#DEBA84" 
22.
            BorderStyle="None" BorderWidth="1px" CellSpacing="2" GridLines="Both" 
23.
            RepeatColumns="3" RepeatDirection="Horizontal" ShowFooter="False" 
24.
            ShowHeader="False" ItemStyle-VerticalAlign="Top">
25.
            <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
26.
            <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
27.
            <ItemStyle BackColor="#FFF7E7" ForeColor="#8C4510" VerticalAlign="Top" />
28.
            <ItemTemplate>
29.
                <div style="padding: 10px; width: 342px; font-weight: bold;">
30.
                    <table style="width:100%;">
31.
                        <tr>
32.
                            <td class="style2">
33.
                                Betreff:</td>
34.
                            <td>
35.
                                <asp:Label ID="lblTerminname" runat="server" ForeColor="#0033CC" 
36.
                                    Text='<%# Eval("Terminname") %>'></asp:Label>
37.
                            </td>
38.
                        </tr>
39.
                        <tr>
40.
                            <td class="style2">
41.
                                Ort:
42.
                            </td>
43.
                            <td>
44.
                                <asp:Label ID="lblOrt" runat="server" ForeColor="#0033CC" 
45.
                                    Text='<%# Eval("Ort") %>'></asp:Label>
46.
                            </td>
47.
                        </tr>
48.
                        <tr>
49.
                            <td class="style2">
50.
                                Startzeit:
51.
                            </td>
52.
                            <td>
53.
                                <asp:Label ID="lblStartzeit" runat="server" ForeColor="#0033CC" 
54.
                                    Text='<%# Eval("Startzeit") %>'></asp:Label>
55.
                            </td>
56.
                        </tr>
57.
                        <tr>
58.
                            <td class="style2">
59.
                                Endzeit:</td>
60.
                            <td>
61.
                                <asp:Label ID="lblEndzeit" runat="server" ForeColor="#0033CC" 
62.
                                    Text='<%# Eval("Endzeit") %>'></asp:Label>
63.
                            </td>
64.
                        </tr>
65.
                        <tr>
66.
                            <td class="style2">
67.
                                Kommentar:</td>
68.
                            <td>
69.
                                <asp:Label ID="lblKommentar" runat="server" ForeColor="Red" 
70.
                                    Text='<%# Eval("Kommentar") %>'></asp:Label>
71.
                            </td>
72.
                        </tr>
73.
                    </table>
74.
                    </div>
75.
            </ItemTemplate>
76.
            <SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
77.
        </asp:DataList>
78.
    </div>
79.
    </form>
80.
</body>
81.
</html>
Codebehind: "Default.aspx.cs"
01.
using System;
02.
using System.Data;
03.
using System.Collections.Generic;
04.
using System.Linq;
05.
using System.Web;
06.
using System.Web.UI;
07.
using System.Web.UI.WebControls;
08.
using Microsoft.Exchange.WebServices;
09.
using Microsoft.Exchange.WebServices.Data;
10.
using System.Net;
11.
using System.Net.Security;
12.
using System.Security.Cryptography.X509Certificates;
13.

14.
public partial class _Default : System.Web.UI.Page
15.
{
16.
    protected void Page_Load(object sender, EventArgs e)
17.
    {
18.
        ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
19.
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
20.
        service.Url = new Uri("https://server.domain.local/EWS/Exchange.asmx");
21.
        service.Credentials = new WebCredentials("[USERNAME]", "[PASSWORD]", "[DOMAIN]");
22.
        CalendarView view = new CalendarView(DateTime.Today.AddDays(-1), DateTime.Today.AddDays(7));
23.
        FindItemsResults<Appointment> apps = service.FindAppointments(WellKnownFolderName.Calendar, view);
24.

25.
        DataTable dt = new DataTable("Termine");
26.
        dt.Columns.Add("Terminname");
27.
        dt.Columns.Add("Ort");
28.
        dt.Columns.Add("Startzeit");
29.
        dt.Columns.Add("Endzeit");
30.
        dt.Columns.Add("Kommentar");
31.
        foreach (Appointment app in apps)
32.
        {
33.
            app.Load();
34.
            DataRow dr = dt.NewRow();
35.
            dr.SetField("Terminname", app.Subject);
36.
            dr.SetField("Ort", app.Location);
37.
            dr.SetField("Startzeit", app.Start.ToString());
38.
            dr.SetField("Endzeit", app.End.ToString());
39.
            dr.SetField("Kommentar", app.Body.Text);
40.
            dt.Rows.Add(dr);
41.
        }
42.
        dt.AcceptChanges();
43.
        DataList1.DataSource = dt;
44.
        DataList1.DataBind();
45.
    }
46.

47.

48.
    private static bool CertificateValidationCallBack(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
49.
    {
50.
        return true;
51.
    }
52.
}
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
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail
Spam mit Terminvorschlag Kalendereintrag
gelöst Frage von heavenscentOutlook & Mail1 Kommentar

Hallo in die Runde, wir bekommen "neuartige" (gabs vermutlich schon mal) Spam Mails die eine Terminanfrage senden und somit ...

Exchange Server

Kategorie für Kalendereintrag freigeben

Frage von VoiperExchange Server3 Kommentare

Hallo in die Runde, kann mir jemand verraten, wie ich bei einem Kalendereintrag den Betreff (eingeschränkte Details) und die ...

Microsoft Office

Word bestimmt Sprache selbst

gelöst Frage von honeybeeMicrosoft Office1 Kommentar

Hallo, habe in Word 2016 ein nerviges Problem: Auf meinem Computer (Windows 10) sind zwei Sprachen installiert: Deutsch und ...

Mac OS X

Safari öffnet bestimmt Seite nicht

Frage von tomi93Mac OS X2 Kommentare

Hallo , ich habe an einem iMac bei uns im Unternehmen das Problem das Safari dort eine bestimmte Seite ...

Neue Wissensbeiträge
Windows 10

Windows 10 - Programme laufen schneller, wenn Sie mit Administratorrechten ausgeführt werden

Erfahrungsbericht von 1Werner1 vor 13 StundenWindows 106 Kommentare

Moin, das wollte ich erst nicht glauben, aber es ist so. Wenn Ihr ein Programm mit Administratorrechten unter Windows ...

Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 1 TagSicherheits-Tools5 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Off Topic
Sachen die die Welt nicht braucht - Platz 1
Tipp von brammer vor 4 TagenOff Topic21 Kommentare

Hallo, ich habs als Tipp angelegt als Erfahrungsbericht nein Danke brammer

Humor (lol)
Spirit of Health-Kongress in Berlin
Information von AnkhMorpork vor 4 TagenHumor (lol)6 Kommentare

tgif! Beim dritten Spirit of Health-Kongress trafen sich am Wochenende Alternativmediziner und Naturheilkundler im Maritim Hotel Berlin, um sich ...

Heiß diskutierte Inhalte
Hardware
Telefonanlagen - Welche gibt es
Frage von Xaero1982Hardware21 Kommentare

Nabend Zusammen, ich suche eine neue TK Anlage und mein Auftraggeber will jetzt was völlig neues - State of ...

Windows Server
Eingeschränkte Gruppen - Spezielle Benutzergruppe hinzufügen
Frage von killtecWindows Server17 Kommentare

Hallo, ich möchte gerne folgendes Realisieren: Ich habe bei mir Eingeschränkte Gruppen via GPO aktiv und möchte nun der ...

LAN, WAN, Wireless
Intel(R) PRO Wireless 3945ABG
gelöst Frage von Leon509LAN, WAN, Wireless15 Kommentare

Hallo, habe ein Laptop Fujitsu (Intel, 4GB, 2GHz, Windos10, Intel(R) PRO/Wireless 3945ABG ) ein O2 DSL Anschluss Home50. Leider ...

Microsoft Office
Videodateien auf Windows Server 2008 R2 öffnen schlägt fehl
Frage von SchroediMicrosoft Office14 Kommentare

Hallo zusammen, wir haben das Problem das embedded Videos in PowerPoint (O365) auf unserer Citrix Farm (6.5) nicht abgespielt ...