Hallo,
ich habe hier ein Problem, bei welchem ich am Verzweifeln bin.
Um Attachments einer Mail zu lösen, habe ich einen Agenten geschrieben, welcher ueber die $File-Items des Dokumentes iteriert. Die entsprechende Routine sieht etwa wie folgt aus:
Sub Initialize
Dim session As New NotesSession
Dim cdb As NotesDatabase
Dim docs As NotesDocumentCollection
Dim doc As NotesDocument
Dim object As Variant
Dim filename As String
Dim exp_path As String
exp_path = "c:\temp\"
Set cdb = session.CurrentDatabase
Set docs = cdb.UnprocessedDocuments
Set doc = docs.GetFirstDocument
If (doc.HasEmbedded) Then
Forall item In doc.Items
If ((Ucase (item.Name) = "$FILE") _
And item.Type = ATTACHMENT) Then
filename = item.Values ( 0 )
Set object = doc.GetAttachment ( filename )
filename = GetAttachmentFileName (exp_path, filename)
Call object.ExtractFile (filename)
End If
End Forall
End If
End Sub
Function GetAttachmentFileName (attpath As String, attname As String) As String
Dim i As Integer
Dim filename As String
i = 1
filename = attpath & "\" & attname
While Dir (filename) <> ""
filename = attpath & "\" & Right ("00" & Cstr (i), 3) & "_" + attname
i = i + 1
Wend
GetAttachmentFileName = filename
End Function
Bisher hat dies auch prima funktioniert. Nun liegt mit jedoch eine Mail-DB vor, bei welcher die Dokumente folgendes Phänomen aufweisen.
Die Dokumente der Mail-DB enthalten mehrere Attachments mit unterschiedlichen Namen. Im Debugger sehe ich jedoch das die $File-Items immer das gleiche Attachment enthalten. Betrachte ich die $File-Items ueber die Dokument-Eigenschaften, werden die Attachmentnamen angezeigt, die ich auch erwarte. Die Anzahl der $File-Items stimmt mit der Anzahl der Attachments ueberein. Fuer obiges Script wird daher das erste Attachment mehrmals exportiert.
Kopiere ich das Dokument in eine andere Mail-DB tritt das Problem nicht mehr auf.
Wenn ich das Script leicht modifiziere erhalte ich jedoch alle gewuenschten Attachments.
Sub Initialize
Dim session As New NotesSession
Dim cdb As NotesDatabase
Dim docs As NotesDocumentCollection
Dim doc As NotesDocument
Dim object As Variant
Dim filename As String
Dim exp_path As String
exp_path = "c:\temp\"
Set cdb = session.CurrentDatabase
Set docs = cdb.UnprocessedDocuments
Set doc = docs.GetFirstDocument
If (doc.HasEmbedded) Then
Dim found As Boolean
Do
found = False
Forall item In doc.Items
If ((Ucase (item.Name) = "$FILE") _
And item.Type = ATTACHMENT) Then
filename = item.Values ( 0 )
Set object = doc.GetAttachment ( filename )
filename = GetAttachmentFileName (exp_path, filename)
Call object.ExtractFile (filename)
item.Remove
found = True
Exit Forall
End If
End Forall
Loop While found = True
End If
End Sub
In jedem Durchlauf der Do-Schleife verweisen immer alle $File-Items auf das erste Attachment.
Meine Frage ist nun warum die $File-Items immer den gleichen Wert enthalten und ob ich dies eventuell abstellen kann. Wie gesagt, das Phaenomen ist mir neu. Zu erwaehnen waere noch, das der Notes-Client die Version 6.5.3 hat und die Mail-DB auf einer Schablone basiert, welche mehrsprachig ist (deutsch, englisch). Der Agent wird am Client ausgefuehrt.
Hat jemand eine Idee?
Bye Marco