Hallo Zusammen,
ich habe ein vermeintlich banales Problem.
Ich möchte den Inhalt eines Richtext-Felds (Body) einer E-Mail um einen HTML Code (Tabelle usw.) erweitern um diese später zu versenden.
Mein Ansatz war, das Notesdokument zuerst nach MIME zu konvertieren, um es dann per DXL zu exportieren.
Im Anschluss wollte ich in der DXL-Datei den HTML Code einfügen, um dann das Ganze wieder zu importieren.
Soweit die Theorie.
Ich scheitere nun aber bereits einfach daran, eine DXL Dokument das ich exportiert habe einfach wieder zu importieren.
Der Import wirft einen Fehler.
Ich habe hierzu diesen Hilfeeintrag gefunden, der mir aber auch nicht geholfen hat.
https://atnotes.de/index.php/topic,62832.msg401123.html#msg401123 (https://atnotes.de/index.php/topic,62832.msg401123.html#msg401123)
Hat jemand noch eine Idee, wie man das sonst noch machen könnte oder was ich aktuell falsch mache?
System: Domino und Notes 12.0.2 FP3
Anbei mein Code:
Function xxx_DXL(newMailDoc As NotesDocument) As Boolean
On Error GoTo errhandler
xxx_DXL = False
Dim streamDoc As NotesStream
Dim dxlExporter As NotesDXLExporter
Dim dxlImporter As NotesDXLImporter
Dim ses As New NotesSession
Dim strDoc As String
Dim filename As String
Dim filenum As Integer
filename = "C:\temp\NotesDokument_XML_Export.dxl"
' Dokumenet nach MIME konvertieren
Call newMailDoc .ConvertToMIME( CONVERT_RT_TO_HTML)
' Dokument exportieren
On Error Resume Next
Kill filename
On Error GoTo errhandler
filenum = FreeFile
Open filename For Output As filenum Charset = "UTF-8"
Set streamDoc = ses.Createstream()
Set dxlExporter = ses.CreateDXLExporter()
dxlExporter.Omitrichtextattachments = True
Call dxlExporter.SetInput(newMailDoc)
Call dxlExporter.SetOutput(streamDoc)
Call dxlExporter.Process
strDoc = streamDoc.ReadText
Write #filenum, strDoc
Close filenum
'Nun das DXL File wieder importieren
Set dxlImporter = ses.Createdxlimporter()
dxlImporter.DocumentImportOption = DXLIMPORTOPTION_UPDATE_ELSE_IGNORE
dxlImporter.Inputvalidationoption = 0
Call dxlImporter.Import(strDoc, CS_Database)
xxx_DXL = True
Exit Function
errhandler:
Msgbox "Fehler: " & Error & " (" & Err & ") in Zeile: " & Erl, 16, ""
Exit Function
End Function
Grüße
Bernd
Ich mache relativ viel über DXL-Exports sowie -Imports und weiß dass ich damals viel gekämpft habe, bis ich das zum Laufen gebracht hatte und viele Bugs bzw. Ungereimtheiten gefunden hatte.
Folgendes (vereinfachtes und ich hoffe selbsterklärendes) Code-Fragment funktioniert bei mir, erzeugt aber ein neues Dokument ...
-Werner
Set mImporter = mSession.CreateDxlImporter(, mThisDb)
Set stream = mSession.CreateStream
Call stream.Writetext(dxl)
Call mImporter.SetInput(stream)
mImporter.ExitOnFirstFatalError = True
mImporter.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
mImporter.ReplicaRequiredForReplaceOrUpdate = False
On Error Resume Next
Err = 0
Call mImporter.Process
If Err <> 0 Then
... '// hier mImporter.LOG und mImporter.LOGComment anzeigen oder wegloggen usw.
Error 32000, "..."
End If
On Error GoTo 0
strID = mImporter.GetFirstImportedNoteId()
Set doc = mThisDb.GetDocumentByID(strID)