HCL Notes / Domino / Diverses > Entwicklung
Richtext Feld per Script um HTML Code erweitern!
(1/1)
Legolas:
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
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:
--- 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
--- Ende Code ---
Grüße
Bernd
Werner Götz:
warum muss die Tabelle denn auf HTML Basis sein?
-Werner
Legolas:
Hallo,
die HTML Datei (Tabelle mit diversem Inhalt) ergänzt die eignetliche E-Mail um Informationen aus einem Drittsystem.
Da das Einfügen bzw. Ergänzen per Richtext-Feld (z.B: ein RichText-Feld mit Tabelle) beim anschließenden Domino internen rendern (um die Mail per SMTP zu versenden) immer zu Qualitätsverlusten führt, muss das auf diesem Wege umgesetzt werden.
Das Domino Rendering-Ergebnis von komplexeren Tabellen aus Richtext-Feldern nach HTML sieht in den meisten Fällen sehr bescheiden aus.
Grüß
Bernd
Werner Götz:
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
--- Code: ---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)
--- Ende Code ---
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln