vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Dateianhänge aus Outlook-Unterordner extrahieren 
Autor: Tommi467
Datum: 16.01.17 14:25

Hallo zusammen,

Aufgabe ist es, mit einem vb.net Programm die Dateianhänge von Mails in einem´
Unterordner zu extrahieren. Bevor jetzt einer mit VBA anfängt, jaaa... das geht,
aber aus Sicherheitsgründen (Makro-Sicherheitsrichtlinien) fällt dieser Weg aus.

Ich hab schon ein wenig im Netzt gestöbert und auch schon zwei Sources gefunden.
Der eine macht genau was er soll, Dateianhänge extrahieren. Aber nur aus dem Ordner
Posteingang. Die Mails liegen aber in einem anderen Ordner, nennen wir es mal
originell "TEST".

Mit dem zweiten Tool kann ich zwar alle Ordner listen, aber irgendwie bekomme ich
es nicht hin, das die Extraktion mit dem Ordner "Test" arbeitet.

Habe gelesen, das es mit GetDefaultFolder(OlDefaultFolders.olPublicFoldersAllPublicFolders
gehen soll, aber es will ums verrecken nicht laufen. Bekomme immer OlDefaultFolder sei
nicht deklariert...

Kann jemand helfen.

        Dim oOutlook As Object       ' Outlook Object
        Dim oNamespace As Object     ' Namespace Object
        Dim oFolder As Object        ' MapiFolder Object
        Dim oMail As Object          ' Mail Object
        Dim oAnhang As Object        ' Attachment Object
        Dim i As Integer
        Dim j As Integer
 
        Const olFolderInbox = 6
        Const olTXT = 0
 
        On Error Resume Next
 
        ' Outlook-Objekt erstellen
        oOutlook = CreateObject("Outlook.Application")
 
        ' Namespace: MAPI
        oNamespace = oOutlook.GetNamespace("MAPI")
 
        oFolder = oNamespace.GetDefaultFolder(olFolderInbox)
 
        ' Alle Mails durchlaufen
        i = 1
        j = oFolder.Items.Count
        Do While j > 0
            oMail = oFolder.Items(j)
 
            ' Auf Anhang prüfen und evtl. speichern
            With oMail.Attachments
                i = .Count
                Do While (i > 0)
                    oAnhang = .Item(i)
                    oAnhang.SaveAsFile(sPath & CStr(i) & "_" & _
                      oAnhang.DisplayName)
                    i = i - 1
                Loop
            End With
 
            ' Nachricht speichern
            'oMail.SaveAs(sPath & CStr(i) & "_" & oMail.Subject & ".txt", olTXT)
            j = j - 1
        Loop
 
        ' Fertig
        MsgBox("Done")
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateianhänge aus Outlook-Unterordner extrahieren 
Autor: Tommi467
Datum: 24.01.17 15:53

Sooo... hab es inzwischen selbst hin bekommen.

Für alle nachfolgenden die vielleicht auch irgendwann mal danach suchen hier der Source:

Unter Verweise müssen hinzugefügt werden:

Microsoft.office.interop.outlook
Microsoft.Office.Tools.Outlook.v9.0

Imports System.Text
Imports System.Runtime.InteropServices
Imports Microsoft.Office.Interop
 
 
Public Class Form1
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
 
        Dim oOutlook As Object       ' Outlook Object
        Dim oNamespace As Object     ' Namespace Object
        Dim oFolder As Object        ' MapiFolder Object
 
        Dim subFolder As Microsoft.Office.Interop.Outlook.MAPIFolder = Nothing
 
        Const olFolderInbox = 6
        Const olTXT = 0
 
        On Error Resume Next
 
        ' Outlook-Objekt erstellen
        oOutlook = CreateObject("Outlook.Application")
 
        ' Namespace: MAPI
        oNamespace = oOutlook.GetNamespace("MAPI")
 
        oFolder = oNamespace.GetDefaultFolder(olFolderInbox)
 
        subFolder = oFolder.Folders("UNTERORDNER") 'folder.Folders[1]; also 
        ' works
 
        Dim oItems As Outlook.Items
 
        For Each collectionItem As Object In subFolder.Items
 
            Dim newEmail As Outlook.MailItem = TryCast(collectionItem, _
              Outlook.MailItem)
 
            If newEmail.UnRead = True Then
 
                If newEmail.Attachments.Count > 0 Then
                    For i As Integer = 1 To newEmail.Attachments.Count
                        'Dim filePath As String = Path.Combine( 
                        ' destinationDirectory, newEmail.Attachments( 
                        ' i).FileName)
                        Print(1, "-> " & newEmail.Attachments.Item( _
                          i).FileName & vbCrLf)
 
                        newEmail.Attachments(i).SaveAsFile( _
                          Application.StartupPath & "\" & _
                          newEmail.Attachments.Item(i).FileName)
                    Next i
                End If
 
            End If
 
 
        Next collectionItem
 
        FileClose(1)
 
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateianhänge aus Outlook-Unterordner extrahieren 
Autor: Franki
Datum: 25.01.17 05:46

Hallo,
gut dass die Aufgabe gelöst ist, aber:

Zitat:


Aufgabe ist es, mit einem vb.net Programm die Dateianhänge
von Mails in einem Unterordner zu extrahieren. Bevor jetzt einer mit VBA
anfängt, jaaa... das geht, aber aus Sicherheitsgründen (Makro-Sicherheitsrichtlinien) fällt dieser Weg aus.


Was ist das denn für eine Sicherheitsrichtlinie?

Es geht ja um die Dateianhänge aus den E-Mails, und genau diese könnten evtl. unsicher sein. Ob die jetzt per VBA, .NET oder was auch immer bearbeitet werden spielt in Sachen Sicherheit ja überhaupt keine Rolle. Wenn ein Dateianhang unsicher ist, er z.B. einen Trojaner, Virus, irgendwelche Malware enthält oder sonst wie gegen die Sicherheitsrichtlinien verstößt hat rein gar nichts damit zu tun, ob du diesen per VBA oder .NET bearbeitest.

Da solltest du bei deinem Auftraggeber mal nachfragen was so eine Sicherheitsrichtline für eine Sinn hat.

Makrosicherheit ist ein Thema, aber wenn du die Makros selbst schreibts können sie auch sicher oder unsicher sein, genau wie dein .Net Programm auch. Da müsste ja beides verboten werden. (Oder halt geprüft werden vor der Freigabe im Unternehmen)

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateianhänge aus Outlook-Unterordner extrahieren 
Autor: Tommi467
Datum: 25.01.17 08:10

Hallo Franki,

grundsätzlich hast du ja Recht. Das ist ja auch der Grund warum ich
die Einstellungen nicht verändern will. Aber...

Du hast nicht ganz zu ende gedacht.

Es ging um einen "Unterordner". In diesen Unterordner gelangen nur
Mails, die einer Regel entsprechend dort hin verschoben wurden und
dadurch als sicher eingestuft wurden. Weil

1. Sie an eine bestimmt Adresse (nur für diese Anwendung) geschickt wurden

2. Sie von einem legitimierten Absender (Absenderadresse) kommen

3. Sie eine spezielle Kennung im Betreff haben.

Ich glaube, das sind ausreichend Gründe diesen Mails zu vertrauen.
Mal ganz abgesehen davon, das nur übermittelte XML-Dateien weiterverarbeitet
werden und alles andere eh gelöscht wird. Es würde auch niemand in die
Verlegenheit kommen, irgendwelche Schadsoftware zu starten, weil niemand
an diesen Ordner kommt, außer die Routine.

Von daher glaube ich, das es sich bei dieser Vorgehensweise um eine
sicher Art und Weise handelt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateianhänge aus Outlook-Unterordner extrahieren 
Autor: Franki
Datum: 26.01.17 01:34

Hallo,

na klar habe ich das nicht zuende denken können weil ich ja deine speziellen Gegebenheiten nicht kannte. Aber so wie du das beschreibst hört sich das schon besser an mit der Sicherheit.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateianhänge aus Outlook-Unterordner extrahieren 
Autor: effeff
Datum: 26.01.17 10:02

Wo ist Dein Problem? Du musst Deinen Hauptordner definieren und dann durch alle Unterordner iterieren, bis Du Deinen Ordner gefunden hast und ihn als Objekt übernehmen kannst. Das Objekt kannst Du dann wieder durchlaufen, bis alle Anhänge der Items extrahiert sind.

Setz das hier nach .NET um und baue es in Deinen Code ein; Das Original stammt übrigens von M$...

Function GetFolder(ByVal FolderPath As String) As Outlook.folder
 Dim TestFolder As Outlook.folder
 Dim FoldersArray As Variant
 Dim i As Integer
 
 On Error GoTo GetFolder_Error
 If Left(FolderPath, 2) = "\\" Then
 FolderPath = Right(FolderPath, Len(FolderPath) - 2)
 End If
 'Convert folderpath to array
 FoldersArray = Split(FolderPath, "\")
 Set TestFolder = Application.Session.Folders.Item(FoldersArray(0))
 If Not TestFolder Is Nothing Then
 For i = 1 To UBound(FoldersArray, 1)
 Dim SubFolders As Outlook.Folders
 Set SubFolders = TestFolder.Folders
 Set TestFolder = SubFolders.Item(FoldersArray(i))
 If TestFolder Is Nothing Then
 Set GetFolder = Nothing
 End If
 Next
 End If
 'Return the TestFolder
 Set GetFolder = TestFolder
 Exit Function
 
GetFolder_Error:
 Set GetFolder = Nothing
 Exit Function
End Function
 
Sub TestGetFolder()
 
 Dim folder As Outlook.folder
 Set folder = GetFolder("\\DeinPostfach@Irgendwas.de\Test")
 If Not (folder Is Nothing) Then
 'folder.Display
 
 
Dim i As Integer
 
For i = 1 To folder.Items.Count
MsgBox (folder.Items(i))
Next
 
 End If
End Sub

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateianhänge aus Outlook-Unterordner extrahieren 
Autor: Tommi467
Datum: 26.01.17 10:38

Danke Effeff,
aber ich hatte die Lösung ja schon selbst gefunden und
im 2 Thread veröffentlich nachdem niemand geantwortet hatte.
Dachte, vielleicht braucht es jemand anderes vielleicht noch mal.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel