[C#] Outlook Emails auflisten

Drucken
( 4 Votes )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 06.11.2012 Zuletzt aktualisiert am 03.05.2013 Geschrieben von Jonny132
Mithilfe der Office API's hat man die Möglichkeit alle Office-Programme anzuprogrammieren.
In diesem Tutorial zeige ich euch, wie man sich alle Emails aus dem Outlook - Posteingang in einer ListBox auflisten lassen kann.

Dazu müsst ihr Microsoft.Office.Interop.Outlook referenzieren, damit ihr dessen Funktionalität nutzen könnt.

Danach solltet ihr im Code ein Using einfügen um den Zugriff auf diesen Namespacezu erleichten.
using Outlook = Microsoft.Office.Interop.Outlook;
Somit ist die ganze Funktionalität der API mit dem Schlüsselwort 'Outlook' erreichbar.

Mails auslesen und einer ListBox zuweisen:
          Outlook.Application o = new Outlook.Application();
          Outlook._NameSpace ns = (Outlook._NameSpace)o.GetNamespace("MAPI");
          Outlook.MAPIFolder f = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

          foreach (var item in f.Items)
          {
            Outlook.MailItem mail = item as Outlook.MailItem;
            if (mail != null)
            {
              lbEmails.Items.Add(mail.Subject);
            }
          }
Zuerst erstellt ihr eine neue Instanz der Klasse Application.
Von dieser Outlook-Application wird nun der Namespace herausgelöst (Default="MAPI").
Aus diesem Namespace können wir nun mittels GetDefaultFolder() den Standardordner (Default="Posteingang") ein MAPIFolder-Objekt erstellen.
 
Darauffolgend wird über die Items im MAPIFolder iteriert. Da es sich nicht immer um Emails handelt (Besprechungsanfragen, Kontaktdaten), müssen wir zuerst überprüfen ob das MailItem nicht NULL ist, da ansonsten der Code ohne Fehlermeldung abstürzen würde.

Siehe auch: [C#] Einfacher Outlook-Browser programmieren

  • Alex

    schrieb am 2014-02-24 15:19:10

    Hallo Jonny132,

    ich möchte sowie die Irene, die E-Mails aus Outlook in einer ListBox auflisten lassen. Ich finde im Internet keine besseren Beiträge bezüglich dessen als deine. Jedoch hab ich nur Programmierkentnisse in Java und bring mir sozusagen selber C# bei.. Könntest du die Klassen mit den jeweiligen Codes hochladen, so das auch ein C# dumy nachvollziehen kann, wie du das gemeint hast ?

    LG

    Auf Kommentar antworten

    • Jonny132

      schrieb am 2014-02-26 09:12:19

      Hallo Alex,

      es steht eigentlich alles im Tutorial welche Referenzen und usings du brauchst. Am Ende ist sogar noch ein Link zu einem Tutorial welches einen 'Mailbrowser' darstellt.

      Wenn du dort Probleme hast, wäre es eventuell effizienter ein Thema im Forum zu eröffnen, bei dem du genau erklärst was nicht funktioniert.

      So ist es etwas schwierig herauszufinden, was dir Schwierigkeiten bereitet.

      Auf Kommentar antworten

      • Alex

        schrieb am 2014-02-26 11:35:22

        Hallo Johnny,

        danke für die rasche Antwort. Was würde Beispielweise in die Klasse Application rein gehören ?

        LG

        Auf Kommentar antworten

        • Jonny132

          schrieb am 2014-02-26 17:57:43

          Hallo nochmals Alex,

          die Klasse Application gehört zum Namespace Outlook den du bekommst wenn du bekommst wenn du Microsoft.Office.Interop.Outlook referenzierst wie am Anfang des Tutorials gesagt. (http://tuts4you.de/86-programmieren/allgemein/60-visual-studio-referenzieren-von-projektenassemblys)

          Tut mir leid aber Basics kann ich dir nicht beibringen. Schon garnicht in einer Kommentarsektion. Deshalb falls du weiter Fragen hast geht es bitte im Forum weiter ;) Eine Anmeldung ist auch dort nicht nötig.

          sg

  • Irene

    schrieb am 2012-11-14 09:53:45

    Ich habs jetzt so auch hinbekommen...
    aber vielen Dank für den Link !
    Ist interessant deine Lösung zu sehen...die natürlich nur 1/4 so lang ist :-D

    Auf Kommentar antworten

  • Irene

    schrieb am 2012-11-13 09:15:43

    Hallo Jonny

    Ich möchte die aufgelisteten e-mails aus dem Outlook in eine ListBox speichern und den Text (body) der angeklickte mail (das angeklickte item) mit Doppelklick in eine TextBox schreiben, so dass ich sie dort lesen kann und archivieren kann.
    aber da ich erst seit ein paar Wochen C# programmiere habe ich damit noch so meine Probleme...
    Kannst du mir da Weiterhelfen ?

    sg

    Auf Kommentar antworten

    • Jonny132

      schrieb am 2012-11-13 11:05:58

      Hallo Irene,

      vielleicht kommst du mit diesem Tutorial besser klar: http://tuts4you.de/87-programmieren/csharp/217-c-einfacher-outlook-browser-programmieren

      Falls du weitere Probleme hast - sei es zu diesem Tutorial oder C# ansich, steht dir das Forum (http://tuts4you.de/forum/c) jederzeit zur Verfügung ;)

      Auf Kommentar antworten

  • Irene

    schrieb am 2012-11-12 17:01:59

    also kurt gesagt,möchte ich (aus Lernzwecken) meine E-mails aus dem Outlook aufrufen in eine ListBox und dort mit doppelklick aufs Item (den Betreff der jeweiligen email,was dein code ja soweit erledigt) in eine RichTextBox laden. Da ich gerade mal ein paar Wochen C# mache tue ich mich damit noch schwer und finde eigentlich bei google nix was weiterhilft.
    Hast du da eine Idee ?

    Auf Kommentar antworten

  • Irene

    schrieb am 2012-11-12 11:37:16

    Hallo Jonny 132,

    Mit diesem Code kann mal ja nur den Betreff der e-mails lesen, aber nicht die mail selbst.
    hast du da vllt auch noch ein Tutorium oder einen Tipp, wie man diese e-Mails dann nach dem Auflisten des Betreffs auch noch lesen kann ?

    Gruß, Ich

    Auf Kommentar antworten

    • Jonny132

      schrieb am 2012-11-12 12:16:54

      Hallo Irene,

      in der for-Schleiffe gehts du ja jedes Email durch.
      Dabei kannst du auch auf die Body-Eigenschaft der item-Variable zugreiffen, welche den Inhalt des Emails enthält.

      sg

      Auf Kommentar antworten

Veröffentlichen Sie ihre Kommentare ...