Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: muR am 29.11.05 - 10:59:18
-
Hallo,
ich möchte eine Email die zuvor als dxl gespeichert wurde wieder in die Mailbox zurückholen. Der Import in eine neue leere Datenbank hab ich hinbekommen. nur zur Mailbox funzt es nicht.
Mein Soureccode:
Sub Initialize
Dim session As New NotesSession
'Dim dbdir As NotesDbDirectory
Dim db As NotesDatabase
Dim stream As NotesStream
Dim importer As NotesDXLImporter
Set db = session.CurrentDatabase
filename$ = Left(db.FileName, Len(db.FileName) - 4)
REM Open xml file named after current database
Set stream = session.CreateStream
If Not stream.Open("c:\dxl\" & filename$ & ".dxl") Then
Messagebox "Cannot open " & filename$,, "Error"
Exit Sub
End If
If stream.Bytes = 0 Then
Messagebox "File did not exist or was empty",, filename$
Exit Sub
End If
REM Import DXL into database
Set importer = session.CreateDXLImporter
importer.ReplaceDBProperties = True
importer.ReplicaRequiredForReplaceOrUpdate = False
importer.ACLImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE
importer.DesignImportOption = DXLIMPORTOPTION_CREATE
Call importer.Import(stream, db)
Call stream.Close
'Document in einen andere Ordner verschieben
mynoteID$ = importer.GetFirstImportedNoteID( )
Set importeddocument = db.getdocumentByID(mynoteID$)
Call importeddocument.putInFolder("Easy restore")
End Sub
Als Fehlermeldung erhalte ich:
"DXL importer operation failed"
In der Notes Hilfe sind die Beispiele so angegeben. Was läuft hier falsch?
Zum Speichern der Email als dxl benutze ich folgendes Script:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
REM Open xml file named after current database
Dim stream As NotesStream
Set stream = session.CreateStream
path$ = "c:\dxl\"
filename$ = Left(db.FileName, Len(db.FileName) - 3) & "dxl"
filename$ = path$ & filename$
If Not stream.Open(filename$) Then
Messagebox "Cannot open " & filename$,, "Error"
Exit Sub
End If
Call stream.Truncate
Dim nc As NotesDocumentCollection
Set nc = db.unprocessedDocuments
REM Export note collection as DXL
Dim exporter As NotesDXLExporter
Set exporter = session.CreateDXLExporter(nc, stream)
exporter.ConvertNotesBitmapsToGIF = True 'Bilder als GIF exportieren
Call exporter.Process
End Sub
Vielleicht weiß jemand weiter?
Danke - Gruß muR
-
Interessante Frage.
Die Fehlermeldung ist natürlich sehr spärlich. Es kann sein, dass es daran liegt, dass die Referenz zur DTD nicht gefunden wird.
In einer zweiten Zeile der DXL Datei sollte ein Eintrag dazu vorhanden sein:
z.B. so: <!DOCTYPE Archiv-Interface SYSTEM "archiv.dtd">
Versuch die DTD in dein Exportverzeichnis zu legen, so dass sie von dem Link erreicht wird.
Wie gesagt nur eine Vermutung.
Axel
-
hmm, da wäre auch noch interessant welche Notes-Version Du einsetzt, AFAIK gab es in ersten 6er Versionen noch vermehrt Probleme mit DXL.
-
Hallo,
ich bin durch rumprobieren und Zeitschrtiften lesen doch noch auf eine Lösung gestoßen:
...
REM Import DXL into new database
Set importer = session.CreateDXLImporter(stream, db)
importer.ReplaceDBProperties = False
importer.ReplicaRequiredForReplaceOrUpdate = False
importer.ACLImportOption = 1 ' DXLIMPORTOPTION_IGNORE
importer.DesignImportOption = 1 ' DXLIMPORTOPTION_IGNORE
Call importer.Process
Call stream.Close
...
Bin mir jedoch nicht sicher ob die Umstellung auf "Call importer.Process" und Zuweisung des stream weiter oben unbedingt sein mußte. JEdenfalls geht es jetzt.
Werde noch einige Test damit machen, bin aber mit dem Ansatz sehr zufrieden. Die Mail wird als dxl Datei auf die Platte geschrieben und kann über den Agenten wieder in die Mailbox in einen angegeben Ordner zurück geholt werden.
Gruß muR