|
| |

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 |  |
 | 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 |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevPopUp 2.0 
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere 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
|
|