none
outlook daten auslesen RRS feed

  • Frage

  • hallo zusammen,

    ich möchte meine pst-datei ( outlook 2007 ) über ein vb-programm nach bestimmten emails durchsuchen,
    die auslesen und dann als datei abspeichern.
    hat einer dazu eventuell einen ansatz. ? habe schon den ganzen vormittag dazu gegoogelt, leider vergebens,

    danke

    klaus
    Montag, 7. April 2008 12:59

Antworten

  • Ich verwende C# (.NET 2.x) für etwas ähnliches, unter Verwendung des Programmier-API von Outlook.

     

    In C# muss man beginnen, ein neue Projekt zu machen, dann

         Projekt . Verweis hinzufügen . [COM] . "Microsoft Outlook 12.0 Object Library" 

             (Falle: die Library enthält nicht das Wort "Office")       zufügen.

    Es entsteht dann unter "Verweise" der Namespace "Microsoft.Office.Interop.Outlook", der die Objekte für den Outlookzugriff zur Verfügung stellt.

    Mit denen lässt sich dann etwa über OutlookApplication, MAPIFolder, MailItem etc. das Outlook fernsteuern.

    Die Hilfe dafür gibt es beim Outook:

        C:\Program Files\Microsoft Office\Office12\1031\VBAOL11.CHM

    Sie hat aber bei mir 0 Bytes. Installationsfehler?

     

    Hier eine C#-Klasse, die den Kontakt zum (geöffneten) Outlook herstellt - in VB ist das nicht grundsätzlich viel anders:

     

            private static void Verify( Object o, String VarName )
            {
              if ( o == null )
                throw ( new System.Exception( String.Format( "Verify failed: '{0}' = null", VarName ) ) );
            }

     

            protected internal class TOutlookMailAccessObj   :  IDisposable
            {
                public  Outlook.Application myOlApp;
                public  Outlook.NameSpace   myNameSpace;
                public                           MAPIFolder  myFolder, mySentMail;

                public  string   infoOfLoading= "";

                public TOutlookMailAccessObj()
                {

                                  try {
                  myOlApp = new Outlook.Application();
                                          Verify( myOlApp, "myOlApp" );
                                  try {
                  myNameSpace = myOlApp.GetNamespace("MAPI");
                                          Verify( myNameSpace, "myNameSpace" );
                                  try {
                  // myFolder = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
                  myFolder = myOlApp.Explorers[1].CurrentFolder;
                                          Verify( myFolder, "myFolder" );
                  mySentMail = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);

                                    }  catch ( System.Exception E )  {  MessageBox.Show( "Err @ ...  (vielleicht Zugriff nicht gewährt?) \r\n" + E.Message + "\r\n" + E.StackTrace );  }
                                    }  catch ( System.Exception E )  {  MessageBox.Show( "Err @ Namespace  " + E.Message + "\r\n" + E.StackTrace );  }
                                    }  catch ( System.Exception E )  {  MessageBox.Show( "Err @ Outlook Application  " + E.Message + "\r\n" + E.StackTrace );  }
                }

                public  void Dispose()
                {
                }
            }

     

     

    Zugriff auf eMails dann über   (beachte, dass der Folder auch andere Item-Typen als nur MailItems enthalten kann! Deswegen die explizite Konversion im try{}-Block):

     

                  foreach ( Object Item_NoType in C.myFolder.Items )
                  {
                    MailItem Item= null;
                    try {
                      Item= (MailItem) Item_NoType;    // Contact groups cannot be converted ...
                        }
                    catch   {}

                    if ( Item != null )
                    {

                       ......

    Vielleicht hilft das auch VB-Programmieren ein bisschen weiter ...

     

    ch

     

    Freitag, 13. Juni 2008 16:42

Alle Antworten

  • Ich verwende C# (.NET 2.x) für etwas ähnliches, unter Verwendung des Programmier-API von Outlook.

     

    In C# muss man beginnen, ein neue Projekt zu machen, dann

         Projekt . Verweis hinzufügen . [COM] . "Microsoft Outlook 12.0 Object Library" 

             (Falle: die Library enthält nicht das Wort "Office")       zufügen.

    Es entsteht dann unter "Verweise" der Namespace "Microsoft.Office.Interop.Outlook", der die Objekte für den Outlookzugriff zur Verfügung stellt.

    Mit denen lässt sich dann etwa über OutlookApplication, MAPIFolder, MailItem etc. das Outlook fernsteuern.

    Die Hilfe dafür gibt es beim Outook:

        C:\Program Files\Microsoft Office\Office12\1031\VBAOL11.CHM

    Sie hat aber bei mir 0 Bytes. Installationsfehler?

     

    Hier eine C#-Klasse, die den Kontakt zum (geöffneten) Outlook herstellt - in VB ist das nicht grundsätzlich viel anders:

     

            private static void Verify( Object o, String VarName )
            {
              if ( o == null )
                throw ( new System.Exception( String.Format( "Verify failed: '{0}' = null", VarName ) ) );
            }

     

            protected internal class TOutlookMailAccessObj   :  IDisposable
            {
                public  Outlook.Application myOlApp;
                public  Outlook.NameSpace   myNameSpace;
                public                           MAPIFolder  myFolder, mySentMail;

                public  string   infoOfLoading= "";

                public TOutlookMailAccessObj()
                {

                                  try {
                  myOlApp = new Outlook.Application();
                                          Verify( myOlApp, "myOlApp" );
                                  try {
                  myNameSpace = myOlApp.GetNamespace("MAPI");
                                          Verify( myNameSpace, "myNameSpace" );
                                  try {
                  // myFolder = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
                  myFolder = myOlApp.Explorers[1].CurrentFolder;
                                          Verify( myFolder, "myFolder" );
                  mySentMail = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);

                                    }  catch ( System.Exception E )  {  MessageBox.Show( "Err @ ...  (vielleicht Zugriff nicht gewährt?) \r\n" + E.Message + "\r\n" + E.StackTrace );  }
                                    }  catch ( System.Exception E )  {  MessageBox.Show( "Err @ Namespace  " + E.Message + "\r\n" + E.StackTrace );  }
                                    }  catch ( System.Exception E )  {  MessageBox.Show( "Err @ Outlook Application  " + E.Message + "\r\n" + E.StackTrace );  }
                }

                public  void Dispose()
                {
                }
            }

     

     

    Zugriff auf eMails dann über   (beachte, dass der Folder auch andere Item-Typen als nur MailItems enthalten kann! Deswegen die explizite Konversion im try{}-Block):

     

                  foreach ( Object Item_NoType in C.myFolder.Items )
                  {
                    MailItem Item= null;
                    try {
                      Item= (MailItem) Item_NoType;    // Contact groups cannot be converted ...
                        }
                    catch   {}

                    if ( Item != null )
                    {

                       ......

    Vielleicht hilft das auch VB-Programmieren ein bisschen weiter ...

     

    ch

     

    Freitag, 13. Juni 2008 16:42
  • Hallo, da ihr gerade so im Thema seid, gibt es eine Übersicht von Outlook, wie die einzelnen Spalten von der Tabelle Kontakte, Email usw gibt?

    Kann die Daten in vb.net auslesen, leider fehlen mir Spalten! Z.B. Auslesen der Tabelle Kontakte Lastname, Firstname und noch ein paar andere, aber ne komplette Übersicht habe ich noch nicht gesehen.

    Bitte um kurze Info.
    Montag, 30. Juni 2008 13:19
  • Das steht in der schon erwähnten

        C:\Program Files\Microsoft Office\Office12\1031\VBAOL11.CHM

        (oder einer anderen VBAOLnn.CHM),

    die mit Office ausgeliefert wird (nicht mit dem Compiler),

    unter dem Hilfe-Inhalts-Thema  

        Objects - ( MailItem | ContactItem | ... ) - Eigenschaften (dieses Wort ist ein bisschen unauffällig, oben),

    Eigenschaften sind z.B.   Subject | HTMLBody | ....

    ch

     

     

     

    Donnerstag, 3. Juli 2008 17:54