Feedback

C# - Auslesen aller Outlook Kontakte

Veröffentlicht von am 07.01.2009
(3 Bewertungen)
Mit dieser Konsolenanwendung können alle Outlook Kontakte ausgelesen werden.

Dem Projekt müssen zwei Verweise hinzugefügt werden, die Referenzen werden folgendermaßen hinzugefügt:

- Im Projektmappenexplorer Rechtsklick auf das betreffende Projekt
- Den Tab COM auswählen
- Microsoft Office 12.0 Object Library
- Microsoft Outlook 12.0 Object Library

Bei Office 2003 ist es die Version 11.
using System;
using Microsoft.Office.Interop.Outlook;

namespace GetContacts
{
    internal class Program
    {
        private static void Main()
        {
            var outlookApplication = new ApplicationClass();
            NameSpace mapiNamespace = outlookApplication.GetNamespace("MAPI");
            MAPIFolder contacts = mapiNamespace.GetDefaultFolder(OlDefaultFolders.olFolderContacts);

            for (int i = 1; i < contacts.Items.Count + 1; i++)
            {
                var contact = (ContactItem) contacts.Items[i];
                Console.WriteLine(contact.FullName);
                Console.WriteLine(contact.Email1Address);
                Console.WriteLine();
            }
            Console.Read();
        }
    }
}
Abgelegt unter Outlook, Kontakte, Office, Mapi.

3 Kommentare zum Snippet

Koopakiller schrieb am 04.01.2012:
Ich habe versucht das ganze mit Office 2010 (Office 14) auszuführen, es scheiterte aber an diesen Zeilen:

var outlookApplication = new ApplicationClass();
NameSpace mapiNamespace = outlookApplication.GetNamespace("MAPI");


Fehler 3 "Microsoft.Office.Interop.Outlook.ApplicationClass" enthält keine Definition für "GetNamespace", und es konnte keine Erweiterungsmethode "GetNamespace" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Office.Interop.Outlook.ApplicationClass" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) b:\...\Program.cs 127
Fehler 2 Der Interoptyp "Microsoft.Office.Interop.Outlook.ApplicationClass" kann nicht eingebettet werden. Verwenden Sie stattdessen die entsprechende Schnittstelle. b:\...\Program.cs 126
Fehler 1 Für den Typ "Microsoft.Office.Interop.Outlook.ApplicationClass" sind keine Konstruktoren definiert. b:\...\Program.cs 126

Ich habe die Verweise
- Microsoft Office 14.0 Object Library
- Microsoft Outlook 14.0 Object Library

hinzugefügt. Was mach ich falsch?
GewuerzRegal schrieb am 14.07.2014:
Ersetz mal die Zeile:var outlookApplication = new ApplicationClass();
Durch:var outlookApplication = new Microsoft.Office.Interop.Outlook.Application();

Damit funktioniert es mit Outlook 2012.
Koopakiller schrieb am 14.07.2014:
Wow, das Kommentar ist schon über 2 Jahre alt ^^
Danke für deine Hilfe, auch wenn sich das Problem mittlerweile erledigt hat.

Rein von der Fehlermeldung her, habe ich vergessen den Microsoft.Office.Interop.Outlook zu importieren (using-Anweisung). Den Namespace kann man natürlich auch direkt vor jeden Typ-Namen schreiben
Die 2. Fehlermeldung besagt, dass man in den Eigenschaften des Verweises Inerop-Typ einbetten auf False stellen muss.
 

Logge dich ein, um hier zu kommentieren!