Outlook und .NET
Outlook ist immer noch eine Clientapplication, die eigentlich nicht für den Einsatz automatischer Routinen gedacht ist. Aber wenn Sie ein paar Regeln befolgen, kann können Sie mit Outlook schon erst einfach Lösungen erstellen. Da die Zeiten von Visual Basic 3.0 und COM-Objekten aber schon einige zeit vorbei sind, und nach Microsoft Überzeugung die Zukunft ".NET" gehört, bietet sich natürlich die Entwicklung in dieser Umgebung ab. Outlook ist aber auch in der Version 2007 immer noch ein "COM-Objekt, so dass Sie sich mit "Interop" herumschlagen müssen.
Outlook und .NET
So schlimm ist das mit Interop aber nicht. Ich hoffe aber doch, dass
zukünftig Outlook auch mal per .NET ansprechbar sein wird, auch wenn
Exchange 2007 über Webservices als Ersatz für CDO schon vieles abdecken
kann. Aber Der Weg Über Outlook erlaubt zusätzliche Dinge, von denen
Exchange eigentlich nicht viel weiß, z.B. Clientregeln, Formulare etc.
Um Outlook per .NET ansprechen zu können, benötigen Sie eigentlich nur ein Visual Studio Express. Viele Beispiele hat Microsoft schon als KB-Artikel veröffentlicht, z.B.:
- 314363 HOW TO: Create a contact by using an Item object in Visual Basic .NET
- 313788 HOW TO: Create an Appointment by using Outlook Object Model in Microsoft Visual Basic .NET
- 313789 HOW TO: Create a Meeting Request by using Outlook Object Model in Visual Basic .NET
- 313791 HOW TO: Delete an Outlook Folder by using Outlook Object Model in Visual Basic .NET
- 313801 HOW TO: Retrieve Appointments by using the Outlook Object Model in Visual Basic .NET
- 313802 HOW TO: Retrieve Contacts by using Outlook Object Model in Visual Basic .NET
- 310206 HOW TO: Retrieve Messages by using Collaboration Data Objects für Exchange 2000 in Visual C# .NET
- 313795 HOW TO: Retrieve unread Messages from Inbox by using Outlook Object Model in Visual Basic .NET
Schon die Fülle an Artikeln und Beispielen zeigt auf, dass die Verbindung von .NET zu Outlook doch nicht so schlecht sein kann und vielleicht eine Alternative zu MAPI/CDO darstellt. Zumal gerade CDO durchaus nicht problemlos in Verbindung mit der PowerShell ist.
Beispielcode
Folgendes einfaches Beispiel soll ihnen aufzeigen, wie sie mit Visual Basic.NET und Outlook eine Verbindung zu einem Exchange Postfach herstellen können.
Imports System.Reflection Module Module1 Sub Main() ' Create Outlook application. Dim oApp As Outlook.Application = New Outlook.Application() ' Get Mapi NameSpace and Logon. Dim oNS As Outlook.NameSpace = oApp.GetNamespace("mapi") oNS.Logon("Profilname", "", False, True) ' Get inbox Dim oInbox As Outlook.MAPIFolder oInbox = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) ' Log off. oNS.Logoff() ' Clean up. oApp = Nothing oNS = Nothing oFolders = Nothing oFolder = Nothing End Sub End Module
Allerdings zeigt auch dieses Beispiel, dass der Einsatz von Outlook primär auf das eigene Postfach beschränkt ist. Outlook nutzt Profile, um sich zu verbinden und die "LOGON"-Methode erlaubt nur die Angabe eines Profilnamens, Profilkennworts, Optionen, aber keine Anmeldung wie die mit CDO möglich ist.
Und es ist keine gute Idee, für jedes Postfach, auf welches Sie per Outlook zugreifen wollen, ein MAPI-Profil anzulegen und jedes Mal sich in Outlook ab und neu anzumelden.
Outlook Interop
Aus .NET kann man bei installiertem Outlook auch über die Interop-Schnittstelle auf Outlook zugreifen.
- Outlook und PowerShell
- Microsoft.Office.Interop.Outlook Namespace
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook(v=office.12).aspx - Why use the Outlook PIA
http://msdn.microsoft.com/en-us/library/bb645534(v=office.12).aspx
Weitere Links
- An Introduction to Programming Outlook 2003 using C#
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dv_vstechart/html/ol03csharp.asp - 824009 BUG: "Attempt to Access the Method Failed" Error Message When You use a Reference to the Wrong Microsoft Forms 2.0 Object Library
- 830519 BUG: Cancel Parameter für Office Events Is Ignored in Visual Studio .NET 2003
- 309336 BUG: InvalidCastException Is Generated When You Try to Sink Outlook Application Events
- 315981 BUG: Visual Basic .NET "'[Method]' is ambiguous across the inherited interfaces" Error Message When using Office Automation
- Developing Microsoft Office Solutions using C#
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnofftalk/html/office02072002.asp - 819398 HOW TO: Automate Outlook and Word by using Visual C# .NET to create a pre-populated e-mail message that can be edited
- 302902 HOW TO: Binding für Office Automation Servers with Visual C# .NET
- 314363 HOW TO: Create a contact by using an Item object in Visual Basic .NET
- 313788 HOW TO: Create an Appointment by using Outlook Object Model in Microsoft Visual Basic .NET
- 314192 HOW TO: Create an Outlook Calendar folder by using the HttpWebRequest class in Visual Basic .NET
- 313789 HOW TO: Create a Meeting Request by using Outlook Object Model in Visual Basic .NET
- 313791 HOW TO: Delete an Outlook Folder by using Outlook Object Model in Visual Basic .NET
- 310203 HOW TO: List All Fields of an Object by using Collaboration Data Objects für Exchange 2000 Server Library in Visual C# .NET
- 313797 HOW TO: List Members of a Distribution List by using Outlook Object Model in Visual Basic .NET
- 313796 HOW TO: List the File Menu Commands by using Outlook Object Model in Visual Basic .NET
- 310269 HOW TO: Read Mail by using Collaboration Data Objects 1.21 Library and Reflection in Visual C# .NET
- 314195 HOW TO: Retrieve an object's security descriptor property by using Visual Basic .NET
- 313801 HOW TO: Retrieve Appointments by using the Outlook Object Model in Visual Basic .NET
- 313802 HOW TO: Retrieve Contacts by using Outlook Object Model in Visual Basic .NET
- 310206 HOW TO: Retrieve Messages by using Collaboration Data Objects für Exchange 2000 in Visual C# .NET
- 313795 HOW TO: Retrieve unread Messages from Inbox by using Outlook Object Model in Visual Basic .NET
- 303296 HOW TO: use Automation to Get and Set Office Document Properties with Visual C# .NET
- 310251 HOW TO: use the Microsoft Outlook Object Library to force a Send/Receive action by using Visual C# .NET
- 310258 HOW TO: use the Microsoft Outlook Object Library to retrieve a message from the Inbox by using Visual C# .NET
- 310259 HOW TO: use the Microsoft Outlook Object Library to retrieve an appointment by using Visual C# .NET
- 310263 HOW TO: use the Microsoft Outlook Object Library to send a message that has attachments by using Visual C# .NET
- 310262 HOW TO: use the Microsoft Outlook Object Library to send an HTML formatted message by using Visual C# .NET
- 827476 Incorrect reference or missing reference to Office 2003 primäry interop assembly (PIA)
- 311452 INFO: Develop Microsoft Office Solutions with Visual Studio .NET
- 840585 Information about designing Office XP add-ins and Office 2003 add-ins by using the .NET Framework
-
Introducing .NET to Office Developers
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnofftalk/html/office10042001.asp -
Microsoft Office and .NET Interoperability
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnofftalk/html/office11012001.asp - 824012 Microsoft Visual Studio .NET may detect the Microsoft Office 2003 primäry Interop Assemblies as dependencies when you create a Microsoft Visual Studio .NET Setup project
-
Newsgroup - Accessing common properties of Outlook Items in .NET
http://www.dotnet247.com/247reference/msgs/6/33141.aspx -
Office 2003 primäry Interop Assemblies Installation
http://www.shahine.com/omar/PermaLink,guid,87af7cc5-b74d-4fef-a5e6-0f33db18e328.aspx - 322027 OL2002: COM Add-Ins Are Not Trusted If They Are Created with Visual Studio .NET
- 316724 PRB: Macro Warning in Office Application When .NET Shared Add-in Is Loading
- 316723 PRB: Visual Studio .NET Shared Add-in Is Not Displayed in Office COM Add-ins Dialog Box
-
Programming für Outlook using managed code is better with a Shim
http://www.shahine.com/omar/PermaLink,guid,3d8a0445-379a-4e0b-bc7c-697a17060040.aspx -
Programming für Outlook using managed code is hard
http://www.shahine.com/omar/PermaLink,guid,b0a7193b-7a4f-4d9e-baea-918f7bca45f9.aspx -
Programming Outlook with C#
http://www.dotnetjunkies.com/Tutorial/2E1EEEAF-C78A-4A38-A830-AC204B12DF83.dcik - 310244 Programming samples that can reference items and folders in Outlook by using Visual C# .NET
- 813349 Support Policy für Microsoft Exchange APIs with .NET Framework Applications
-
What's New in Microsoft Office Outlook 2003 für Developers?
http://msdn.microsoft.com/library/?URL=/library/en-us/odc_ol2003_ta/html/odc_OLWhatsNew2k3.asp - Programming Microsoft Outlook with Visual Studio .NET
http://www.microeye.com/resources/res_outlookvsnet.htm - Outlook with .NET 2.0
http://www.c-sharpcorner.com/UploadFile/Nimusoft/OutlookwithNET06262007081811AM/OutlookwithNET.aspx