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, 9174 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

Anzeige von Kalendereinträgen in Oulook 2010

gelöst Frage von HardrockracerOutlook & Mail7 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, sich Kalendereinträge (in diesem Fall ganztägige), die dieselbe (Farb) Kategorie haben, sortiert untereinander ...

Exchange Server

Verfügbarer Speicherplatz eines Postfachs unter Exchange 2010 anzeigen lassen

Frage von RalphTExchange Server3 Kommentare

Moin, wie kann man in der PS sich von einem bestimmten Postfach eines Nutzers den verfügbaren Speicherplatz anzeigen lassen?

Datenbanken

TSQL SQL Abfrage um verknüpfte Vorgänge anzeigen zu lassen

Frage von schwarer2006Datenbanken1 Kommentar

Hallo zusammen habe 2 Tabellen im SQL Server 2012 Tabelle 1 ID Vorgangsnummer Projekt 1 A 1234 2 B 1234 3 C 1234 4 D ...

Microsoft Office

Outlook 2010 löscht Kalendereinträge

Frage von addamainMicrosoft Office4 Kommentare

Hallo zusammen, habe noch eine Frage - und zwar habe ich das Problem bei einem Kunden, dass bei seinem ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 17 StundenMicrosoft

Server Betriebssysteme auf dem die verschiedenen Offices nicht supported sind: • Office 365 ist und wird nicht supported auf Windows ...

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 18 StundenSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 20 StundenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 1 TagHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows 10
Sysprep Fehler im Log kann nicht starten
Frage von grillinator95Windows 1022 Kommentare

Hallo, kann leider SYSPREP nicht mehr starten, Win10 64bit. Logfile sagt folgendes: 2018-10-17 13:44:56, Info SYSPRP 2018-10-17 13:44:56, Info ...

Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen19 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...

Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple14 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Outlook & Mail
Outlook schiebt Mails aus Posteingang sofort in den Papierkorb
Frage von hermesOutlook & Mail13 Kommentare

Hallo Outlook Fachleute, wir haben hier das Problem, dass Outlook 2010 alle ankommenden Mails seit zwei Tagen einfach in ...