vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

Fortgeschrittene Programmierung
Outlook Anhang auf HD abspeichern als Dienst einsetzen 
Autor: Frank77
Datum: 11.10.07 17:06

Hallo,

schon vor einigen Jahren habe ich hier im Forum einen Beitrag gefunden wie man mit VB über MAPI auf ein in Outlook eingerichtetes Postfach zugreift und Emailanhänge auf die Festplatte abspeichert.

http://www.vbarchiv.net/archiv/tipp_details.php3?pid=739

Das hat auch all die Jahre prima funktioniert. Nun möchte ich aber die Applikation erweitern und das Ganze als Dienst laufen lassen. Auch dieser Schritt hat geklappt.
Nur, sobald ich die Applikation als Dienst laufen lasse bekomme ich einen Fehler an der Stelle
Set oFolder = oNamespace.GetDefaultFolder(olFolderInbox)
Im interaktiven Modus alles kein Problem, da funktioniert die Sub-Routine perfekt.
Ich habe sie mal hier reinkopiert, vielleicht kann mir jemand sagen warum an dieser einen Stelle das Error-Handling zuschlägt.
Zur Info, der Dienst wird als Benutzer gestartet für den auch Outlook eingerichtet ist!

Public Sub Email_To_HDD(ByVal sPath As String, Erweiterung As String)
  On Error GoTo error_handler
 
  Dim strStatus As String
  strStatus = "Variablen-Definition"
  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 oDestFolder As Object    ' ZielFolder für Outlook Mail
  Dim i As Integer
  Dim j As Integer
  Dim blnSaveAtt As Boolean
 
  ' Outlook-Konstanten
  strStatus = "Konstanten-Definition"
  Const olFolderInbox = 6
  Const olTXT = 0
 
  strStatus = "Attachement Speicherort bestimmen"
  ' Ggf. abschließenden Backslash entfernen
  If Right$(sPath, 1) = "\" Then
    sPath = Left$(sPath, Len(sPath) - 1)
  End If
 
  ' Falls Zielordner nicht existiert,
  ' jetzt erstellen
  strStatus = "Attachement Speicherort ggf. erstellen"
  If Dir$(sPath, vbDirectory + vbHidden) = "" Then
    MkDir sPath
  End If
 
  ' Outlook-Objekt erstellen
  strStatus = "Objekt fuer Outlook erstellen"
  Set oOutlook = CreateObject("Outlook.Application")
 
  ' Namespace: MAPI
  strStatus = "Typ ist MAPI"
  Set oNamespace = oOutlook.GetNamespace("MAPI")
 
  ' Outlook-Ordner: "Neue Nachrichten"
  strStatus = "Posteingang fuer neue Nachrichten"
  Set oFolder = oNamespace.GetDefaultFolder(olFolderInbox)
 
  ' Alle Mails durchlaufen
  strStatus = "Alle Mails durchlaufen"
  i = 1
  j = oFolder.Items.Count
  Do While j > 0
    blnSaveAtt = False
    Set oMail = oFolder.Items(j)
 
    ' Auf Anhang prüfen und evtl. speichern
    With oMail.Attachments
      i = .Count
      Do While (i > 0)
        Set oAnhang = .Item(i)
 
        ' Anhang unter entsprechendem Namen speichern.
        ' Das "i_" ist nur zur Sicherheit, um doppelte
        ' Dateinamen zu verhindern
        If blnCheck_FileExt(oAnhang.DisplayName, Erweiterung) = True Then
          strStatus = "Anhang gefunden und speichern nach " & sPath & "\" & _
            oMail.SenderName & "_" & oAnhang.DisplayName
          'oAnhang.SaveAsFile sPath & "\" & CStr(i) & "_" & _
          oAnhang.DisplayName
 
          oAnhang.SaveAsFile sPath & "\" & oMail.SenderName & "_" & _
            oAnhang.DisplayName
          blnSaveAtt = True
        End If
        i = i - 1
      Loop
    End With
 
    'eingefügt am 19.10.05, wenn eine Mail gelöscht oder verschoben werden soll
    If blnSaveAtt Then
      strStatus = "Mail wird weiterverarbeitet nach der festgelegten Methode: " _
        & strMailStatus
      Select Case UCase(strMailStatus)
        Case UCase("DeleteMail"): oMail.Delete
        Case UCase("MoveMail")
          ' Outlook Unterordner festlegen
          Set oDestFolder = oFolder.Folders(strMailFolder)
          oMail.Move oDestFolder
        Case UCase("LeaveMail"):
        Case Else
          'MsgBox "Falscher Parameter in Parameter-Datei angegeben", vbCritical
          Form1.NTService1.LogEvent svcEventError, svcMessageError, _
            Err.Description & " - Email_To_HDD - Falscher Parameter (" & _
            "DeleteMail, MoveMail, LeaveMail)"
      End Select
    End If
 
    j = j - 1
  Loop
 
  ' Fertig
  'MsgBox "Done"
 
  ' Objekte zerstören
  strStatus = "Mailobjekte zerstören"
  Set oMail = Nothing
  Set oAnhang = Nothing
  Set oFolder = Nothing
  Set oNamespace = Nothing
  Set oOutlook = Nothing
  Exit Sub
 
error_handler:
 Form1.NTService1.LogEvent svcEventError, svcMessageError, Err.Description & _
 " - Email_To_HDD - Email Attachement Export Fehler an der Stelle " & strStatus _
 & " - "
 Set oMail = Nothing
 Set oAnhang = Nothing
 Set oFolder = Nothing
 Set oNamespace = Nothing
 Set oOutlook = Nothing
 
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Outlook Anhang auf HD abspeichern als Dienst einsetzen2.398Frank7711.10.07 17:06
Re: Outlook Anhang auf HD abspeichern als Dienst einsetzen831Frank7711.10.07 17:24

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-2025 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