| |

Fortgeschrittene ProgrammierungOutlook 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 |  |
 | 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 |
  |
|
TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
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
|
|