Programmieren
Mit Microsoft Exchange und Outlook können Sie aber auch umfangreiche Projekte und Lösungen erschaffen, wenn Sie sich ein wenig an die Programmierung heran trauen. Sie erlauben umfangreiche eigene Erweiterungen um mehr aus dem System raus zu holen. Hierzu gehören mehrere Wege, um eigene Entwicklungen zu schreiben.
What API should I be using for new Exchange 2007
development?
http://blogs.technet.com/b/exchange/archive/2007/06/04/439829.aspx
813349 Support policy for Microsoft Exchange APIs with the .NET Framework
applications
Exchange Developer Roadmap
http://blogs.msdn.com/exchangedev/archive/2008/05/22/exchange-developer-roadmap.aspx
Exchange API-spotting Exchange 2010 SDK March update
http://blogs.msdn.com/exchangedev/archive/2010/03/03/Thom-Randolph.aspx
Die die Entwickler rund um Exchange gibt es seit einiger Zeit sogar ein eigenes Portal:
Exchange Server Developer Center
http://msdn.microsoft.com/en-us/exchange/default.aspx
Exchange Server Protocols
http://msdn.microsoft.com/en-us/library/cc307725(EXCHG.80).aspx
Da die Seite schon recht umfangreich ist, werde ich die Seite nach und nach untergliedern, um mehr Übersichtlichkeit zu erreichen
Exchange und Outlook Programmierung
Bitte nutzen Sie für eine Detailbeschreibung die Seite Wege und API's

Folgende Zugriffsarten und APIs werden beschrieben.
- Client:Outlook Formulare
Dazu sollten Sie auch Messageclass lesen. - Client:Outlook VBA
- Outlook AddIns - DLLs erweitern Outlook
- Client:CDO und MAPI
- Client-Server: AD mittels LDAP/ADSI
- Client-Server: HTTP per WebDAV.
- Client-Server: HTTP per Webservice mit EWS
- SMTP-EventSink
Siehe auch SingleServerSink) - E2K7: Transportagents
- Server: CmdLetExtensionAgent - Exchange 2010 Commandlets um eigene Funktionen erweitern
- ADSI und LDAP
- EventSink im Store
- Server: CDOEX/CDOEXM
- Server: Event Service
- Server ExOLEDB
- Outlook Security
-
Outlook Webparts
Eine ganz einfache Lösung ist natürlich die Integration von OWA in eigene Webseiten als Webpart. der folgende Link hilft hier weiter:
Using Outlook Web App Web Parts
http://technet.microsoft.com/en-us/library/bb232199.aspx
Powershell
Anfangs war es nur eine kleine Seite. Nun gibt es schon einige Zusatzseiten für besondere Aufgaben
-
PowerShell4Admins
Die Bedeutung für Administratoren -
Powershell Beispiele
Meine eigene Referenz mit Beispielen für Powershell Entwicklung - RSAT AD-Powershell - per Powershell umfangreiche AD-Änderungen machen
-
PS Performance
Ablaufgeschwindigkeit optimieren. -
PSModule
Wiederverwendbarer Code in Modulen auslagern -
Powershell Klassen
So können sie auch in Powershell Klassen zum Eigenbedarf schreiben -
PSParalllel
Performance durch parallele Verarbeitung ist einfach, wenn man die Fallstricke kennt -
Powershell und Visual Studio
Templates für eigene Powershell Snapins in Visual Studio installieren
Diese FAQ-Seite kann und soll nicht Seite für Exchange Entwickler werden, aber einige Beispielskripte können ihnen helfen, einen Einstieg in die Materie zu finden und vielleicht Neugierig auf mehr zu machen. Hier einige Skripte:
Sonstige Informationen
- Script oder Lösung
Warum sind Eigenentwicklungen immer so "teuer" - .NET Framework
Was verbirgt sich hinter dem Framework, welches mit Windows 2003 erstmal Furore macht aber auch auf Windows 2000 verfügbar ist. - .NET für Administratoren
Wie schaffen Sie mit Visual Studio Express den Schritt weg von VBScript und Batchfile - ASP
Kurze Einführung und Abgesang zu ASP - ASP.NET
Was es bedeutet, heute für das Web zu entwickeln. -
ASP.NET Sitemap
VBA-Makro zur Erstellung von ASP.NET Sitemaps aus der Frontpage Navigation -
Regeln (Client und Server)
Regeln werden mit Outlook erstellt und vom Server und teilweise vom Client interpretiert. - ADSI und das Schema
Die "Versionsnummer" des Schema und was dahinter steckt - Management Programme
Gerade zum Management von Exchange sind Schnittstellen vorhanden (LDAP, ADSI, MAPI/CDO, CDOEX, CDOEXM) um mit nahezu jeder beliebigen Sprache (Auch VBScript !) umfangreiche Veränderungen durch ein Programm zu realisieren, z.B. Benutzer anlegen etc. -
AD LDAPFelder
Feldbeschreibung ausgewählter LDAP-Felder im Active Directory - LDAP 5.5
So können Sie per LDAP auf das Exchange 5.5. Verzeichnis zugreifen -
EX55 LDAPFelder
Gastbeitrag zu den Exchange 5.5 Feldern und ihrer Erreichbarkeit per LDAP -
Kontaktfelder
Programmieren mit Outlook VBA und Kontakten - VBScript
Was ist VBScript ? - XML
Eine sehr kurze Einführung mit Beispielen und einer einfachen XMLWriter-VBScript-Klasse - WMI
Verwalten von Exchange und mehr oder was kann ich mit WMI anstellen. - Redemption ($)
3rd Party DLL die parallel zu Outlook und CDO einen leistungsfähigen Ersatz darstellen kann - VBScript Falle "ByVAL"
VBScript ist einfach aber nicht ohne Tücken. - Regular Expressions
Eine kurze Einführung am Beispiel von einer SMTP-Adressenverifikation. -
Office Web Charts
Kostenfreies COM-Objekt zum automatischen Erzeigen von Bildern. - TokenGroup
Mitgliedschaft von Gruppen eines Benutzers schnell über Tokengroup ermitteln -
Dirsync-API
Änderungen von Active Directory Inhalten per Software ermitteln -
FileSystemTunnel
Schöner Name für ein seltsames Verhalten mit dem Feld CreationTime
Beispielskripte
Teilweise habe ich diese in anderen öffentlich zugänglichen Quellen gefunden. Die Quelle ist dann natürlich angegeben.
- VBS-Toolbox
Eine Sammlung von Klassen, die ich in verschiedenen Skripten verwende. - VBS:Note2Mail
Wie konvertiere ich Nachrichten, die "Notizen " in öffentlichen Ordner geworden sind zu Nachrichten zurück (Exchange 2000) -
VBS:Disclaimer
Wie können Sie allen ausgehenden Nachrichten eine Nachricht anheften ? -
SpoofDetect
Mails kennzeichnen, wenn diese von Extern mit einer lokalen Domäne kommen. -
FromModify
Absenderadresse ausgehender Mails ändern - SCL-Skript
Musterskript für den Zugriff auf den SCL-Wert von IMF und weitere Aktionen - VBS:MakeUser
Legt einen Exchange enabled User per WSH an -
VBS.MakeContact
Einen Exchange Kontakt mit VBScript anlegen -
VBS:Eventlog Monitor
Überwacht das Eventlog auf Fehler und schlägt Alarm -
VBS:Send Mail
Sendet eine Mail auf dem Server per CDO - VBS:AddContact
Per VBScript einen Kontakt anlegen - BAT:CheckOWA
Prüft die Erreichbarkeit und Basisfunktion von OWA -
VBS:XMessageFlag
Spielerei oder nützlich ? Infoleiste in Outlook steuern -
VBS:Rights
Rechte auf Postfächer können seit SP2 per Skript gesetzt werden -
VBS:ADREAD
Beispiel, wie Sie das Active Directory per WSH auslesen können - File:PICKUP
Wie kann ich das PICKUP Verzeichnis zum Senden von Mails nutzen -
VBS:MBSize
Bestimmen der Mailboxgröße -
Sink:MessageIDFix
Eventscript zum fixen des Mai2004 Bugs mit überlangen MessageIDs - VBS:SMTPList
Ausgeben aller SMTP-Adressen im Forrest
Skripte im Bereich Tools
Weniger als Muster, sondern zur praktischen Anwendung finden Sie im Bereich der Tools weitere Skripte.
-
CatchAll
Unzustellbare Mails in ein Postfach umleiten -
RDNChange
Ändern des angezeigten Namens und RDNs -
VBS:FindSMTP
Findet das Objekt zu einer gegebenen SMTP-Adresse -
CheckExObjects
Prüft ob die Exchange Objekte "Fehlerfrei" sind. -
Querybased Security Group
Sicherheitsgruppen dynamisch pflegen. -
Grp2ExInet
Steuerung der Berechtigungen auf POP3, IMAP, OWA und OMA über Sicherheitsgruppen - Und einige mehr
Franks Tools
Links von Microsoft
- Exchange 2010 Service Pack 1 (SP1) Web Services Software Development
Kit (SDK)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d55dcd05-1dd6-4f44-956f-82f052ee7d82 - Exchange Server 2010 Service Pack 1 (SP1) Backup and Restore SDK
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7d9de319-30c7-4896-9bc9-7e7a54ee3968 - Exchange 2010 Service Pack 1 (SP1) Transport Agents Software
Development Kit (SDK)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=99989695-5116-4ec6-93c3-8395de84996d - Exchange 2007 - Development: Overview
http://technet.microsoft.com/en-us/library/aa997614.aspx - Exchange Server Protocols
http://msdn.microsoft.com/en-us/library/cc307725(EXCHG.80).aspx - Exchange 2003 Developer Center
http://msdn2.microsoft.com/en-us/exchange/default.aspx?wt.svl=MSDNlink - Microsoft Exchange Server 2007 Service Pack 1 (SP1) SDK December
2008
http://www.microsoft.com/downloads/details.aspx?FamilyID=47720d33-fa5a-4af4-a8eb-fa39695cbad1&displaylang=en - New Development Features in Microsoft Exchange 2000
http://msdn.Microsoft.com/library/default.asp?url=/library/en-us/dnmes2k/html/NewDevFeaturesE2K.asp
Sehr gute Einführung in die verschiedenen APIs und deren Nutzung - Alles rund zur Entwicklung von Exchange
http://msdn.Microsoft.com/exchange -
http://www.Microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=542290
http://www.Microsoft.com/TechNet/download/sample.asp
.NET Framework SDK (131 Megabyte) kostenfrei -
http://msdn.Microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/027/000/222/msdncompositedoc.xml
Download des Web Storage SDK -
Outlook 2003: Integration API Reference
http://www.Microsoft.com/downloads/details.aspx?FamilyID=135f4d99-f480-4a81-af8f-f6e4896611e2&DisplayLang=en
This reference contains conceptual overviews and reference topics to guide you in developing solutions based on the Microsoft® Office Outlook® 2003 Integration APIs. - Beispiel für Systemmeldung MaxMsgSize http://msdn.Microsoft.com/library/default.asp?url=/library/en-us/smtpevt/html/_smtpevt_ismtpmaxmsgsize__onsyncmaxmsgsize.asp.
- Liste der Benutzereigenschaften samt Beschreibung
http://msdn.Microsoft.com/library/default.asp?url=/library/en-us/adschema/ad/win2k_c_user.asp - 166106 HOWTO: Getting the Contents of the Exchange Global Address List
MAPI Adressen auslesen - 170225 HOWTO: Modify Settings of MS Exchange Transport Provider
- 171636 HOWTO: Add an Additional Mailbox to a MAPI Profile
- 173353 HOWTO: Save a Message Attachment to File
- 180233 HOWTO: Programmatically Find the Default MAPI Profile
- 188482 HOWTO: Open the Global Profile Section
- 198277 HOWTO Sample JScript for the Exchange Event Service
- 198725 SAMPLE: AdContac.exe Adds Sender of Incoming Message to Contacts
- 200333 OL98: How to Programmatically Determine If Outlook Is Online or Offline
- 201434 OL2000: How to Programmatically Synchronize Folders
- 208520 OL2000: Programming Examples for Referencing Items and Folders
- 230225 OL2000: How to Create a COM Add-in for Outlook
- 291163 How to create a COM Add-in for Outlook 2002
- 231174 OL2000: How to Open a Form from a Toolbar Button
- 232241 Group Management with ADSI in Windows 2000
- 233350 XCON: Store Driver in Exchange 2000 Server
- 233531 XADM: Exchange 2000 Server Information Store Uses Windows 2000 ACLs
- 237677 Using LDIFDE to Import/Export Directory Objects to the AD
- 239005 OL2000: AddToPFFavorites Method Can Add Folder to Favorites
- 239795 HOWTO: List Messages in the Inbox with MAPI
- 237913 INFO: Outlook Object Model Unsuitable to Run in Windows Service
- 248090 MOD2000: How to Edit Large Workflow Scripts Microsoft Script Editor
- 252459 Retrieve Properties of User Objects with ADSI and ADO
- 252650 HOWTO Find Mail/Mailbox-Enabled Users in the Active Directory
- 262631 OL2000: Information About the Outlook E-mail Security Update
- 262701 OL2000: Developer Information About the E-mail Security Update
- 263520 HOWTO: Programmatically Create a Distribution List Using ADSI E2K SDK VB Sample
- 263991 How to Set a User's Password with Ldifde
- 266311 Workflow Common Script File Must Be Saved as Unicode
- 274239 XADM How to Create a Mail-Enabled User Using Visual Basic
- 277717 How to Change the Display Names of Active Directory Users with Active Directory Services Interface Script
- 288158 HOWTO Register for an Exchange 2000 Store Event Sink with ADO
- 295758 HOWTO: Use Visual Basic Script to Clear SidHistory
- 306046 HOWTO Register an Exchange 2000 Store Event Script File Using WebDAV in Visual Basic 6.0
- 306108 OL2002: How to Create a Script for the Rules Wizard
- 306989 HOWTO Register an Exchange Web Form Globally in the Exchange Store
- 313404 HOWTO Register a Transport Event Sink for the SMTP Service in Exchange 2000 Server
- 315653 SAMPLE: SimpleMAPIAssembly Demonstrates Use of Simple MAPI from a .NET Application
- 315702 SAMPLE: SimpleMAPITest Shows How to Call Simple MAPI from Visual Basic .NET
- 316280 XADM A Description of the "ADC Global Names" Attribute
- 324021 HOW TO: Create a "Catchall" Mailbox Sink for Exchange 2000
*@firma.de an eine Mailbox weiter leiten - 259570 XCLN: How to Retrieve Last Logon Time of Exchange Users Using Extended MAPI
- 899919 Developer information about the calendar changes in Outlook 2003 Service Pack 2 and later versions
- Named Properties, X-Headers, and You
http://blogs.technet.com/b/exchange/archive/2009/04/06/451003.aspx - MSDN Exchange 2003 SDK
http://msdn.Microsoft.com/library/en-us/exchanchor/htms/msexchsvr_e2k.asp - MSDN Exchange 2000 SDK
http://msdn.Microsoft.com/library/en-us/exchanchor/htms/msexchsvr_e2k3.asp - Mailbox Size
http://msdn.Microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_wmiref_pr_exchange_mailboxsize.asp oder
Q320071 HOWTO: Programmatically Get the Size of Mailboxes on Exchange Server - Admin. Management mit LDIF/VBS
http://www.Microsoft.com/windows2000/techinfo/planning/activedirectory/bulksteps.asp - Microsoft Scripting Clinik
http://msdn.Microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28001169 - Microsoft Script Editor
Version 7 ist bei XP dabei oder in Office 2000 (HTLM Source Editor). Der Script Editor kann auch als "Mse.exe" gestartet werden, welches sich meist in C:\Program Files\Microsoft Visual Studio\Common\IDE\IDE98\mse.exe oder C:\Programme\Microsoft Office\Office10\MSE7.EXE befindet. - WebDAV Zugriff auf Kalender
http://msdn.Microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_esdk_samples_calendaring_intro.asp
Weitere Links zu Exchange Skripten
- Jede Menge ADSI-Beispiele für den Zugriff auf Exchange 5.5per VBScript
http://dev.coadmin.dk/Resources/ADSI%20SDK%205%20HTML/exchange.htm - Die neue Spielseite von Siegfried Weber
http://playground.doesntexist.org/?category=Exchange - www.exchangecode.com
- Sample Skripts http://activeanswers.compaq.com/ActiveAnswers/Render/1,1027,2398-6-100-225-1,00.htm
- ActiveAnswers E2K http://activeanswers.compaq.com/ActiveAnswers/Render/1,1027,2366-6-100-225-1,00.htm
- Lösungen entwickeln mit Outlook 2002
Wie können Sie mithilfe von Outlook 2002 benutzerdefinierte Formulare erstellen? Diese Fragen werden Ihnen unsere Autoren Paul Cornell und Acey Bunch beantworten. Natürlich kommt dabei auch das Outlook-Objektmodell mit seinen Komponenten und Features nicht zu kurz. http://www.Microsoft.com/germany/ms/msdnbiblio/show_all.asp?
siteid=493710 -
http://www.swinc.com/resource/scripts.htm
Swinc ist ebenfalls eine Resource für Skripte -
http://www.exchangeadmin.com/Articles/Index.cfm?ArticleID=8652&
Key=Outlook%20Deleted%20Items - http://www.outlookexchange.com/articles/stevecraig/default.asp
- Exchange SDK 2002
http://msdn.Microsoft.com/library/default.asp?url=/library/en-us/dnmes2k/html/WNSept2002.asp -
Exchange API-spotting Exchange 2010 SDK March update
http://blogs.msdn.com/exchangedev/archive/2010/03/03/Thom-Randolph.aspx
Kleine Helferlein
- AutoIt
http://www.autoitscript.com/ - AutoHotkey
http://www.autohotkey.com/ - How to recognise a good programmer
http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer






