HCL Notes / Domino / Diverses > Entwicklung

Body-Feld einer E-Mail im HTML Format in eine Datei exportieren

(1/4) > >>

Legolas:
Hallo Forum,

kann mir hier jeamand weiter helfen!
Ich sehe den Wald wohl vor lautre Bäumen nicht mehr.

Was möchte ich tun:

Ich benötige aus einem "Memo" Dokument das Body-Feld im HTML-Format, das ich in eine Datei exportieren möchte.
Mit meinem Code funktioniert das auch teilwiese.

Folgende Probleme habe ich:
- Das Body Feld HTML im DXL Export wird nach 72 Zeichen immer umgebrochen und ich wies nicht warum.
- Umlaute werden nicht korrekt maskiert.

- Das System verhält sich mit dem Formname "Memo" anders als mit dem Formnamen "MemoDummy"?

Kann mir jemand wieterhelfen?
Das kann doch nicht so schwer sein.



--- Code: --- Dim ses As New NotesSession
Dim coll As NotesdocumentCollection
Dim maildoc As NotesDocument
Dim item As NotesItem
Dim rtItem As NotesRichTextItem
Dim objAttachment  As NotesEmbeddedObject

' Markiertes Dokument kopieren
Set coll = ses.Currentdatabase.Unprocesseddocuments
Set mailDoc = coll.Getfirstdocument()

'Dateianhänge aus dem Body Feld löschen
Set rtItem = mailDoc.Getfirstitem("Body")
ForAll o In rtItem.EmbeddedObjects
Set objAttachment = Nothing
Set objAttachment = rtItem.Getembeddedobject(o.name)

If Not objAttachment Is Nothing Then
Call objAttachment.Remove()
End If
End ForAll

        'Alle nicht benötigten Felder löschen
ForAll it In mailDoc.Items
select Case LCase(it.name)
Case "subject",  "sendto", "copyto", "blindcopyto", "from", "body"
' Nicht tun
Case Else
' Alle andere Felder löschen
Call it.remove
End Select
End ForAll

Call mailDoc.save(True, False)

' Body Feld konvertieren
Dim mime As NotesMIMEEntity
ses.ConvertMIME = False
Call maildoc.Converttomime(2)
Call mailDoc.save(True, False)

' Dokument bzw. Body Feld exportieren
' Hinweis: Funktioniert NICHT beim Exportversuch als Stream. Warum auch immer!!
Dim exporter As NotesDXLExporter
Dim strOutput As String
Dim filenum As Integer
Set exporter = ses.CreateDXLExporter
exporter.mimeOption =0

strOutput = exporter.Export(maildoc)

filenum = FreeFile
Open "c:\temp\DXL-Export.dxl" For Output As filenum CHARSET="utf-8"
Write #filenum, strOutput
Close filenum

--- Ende Code ---

Grüße
Bernd

jBubbleBoy:
Ich würde das Ganze pragmatisch lösen, d.h. nach der Erstellung der DXL-Datei diese einlesen und dann beim Schreiben die Zeilenumbrüche und Sonderzeichen den eigenen Bedürfnissen anpassen ...

Legolas:
Hi jBubbleBoy,

danke für die Rückmeldung.
Nur was ich mir einfach nicht vorstellen kann ist, dass selbst Notes im Jahr 2024 immer noch nicht den Mailinhalt als HTML exportieren kann.
Da gibt’s doch sicherlich schon irgendeine Lösung.
Ich bin ja wohl nicht der erste auf der Welt, der diese Funktionalität benötigt.

Das Problem bei der manuellen variante ist leider, dass die Funktion international bei diversen Sprachen zum Einsatz kommt.

Grüße
Bernd

jBubbleBoy:
Notes / Domio ist ein geschlossenes System, wo der Quellcode nicht öffentlich verfügbar ist, was Vor- und Nachteile hat. Ein Nachteil ist, dass Fehler im Unterbau nicht direkt behoben werden können, sondern ein Ticket bei HCL erstellt werden muss. Zu deiner Meldung mit dem Zeilenumbruch kenne ich keine Option / Eigenschaft die das beim DXL Export regelt und zu den Sonderzeichen fällt mir auch nur die Angabe von CHARSET="utf-8" ein.

Aber vielleicht gibt es ja noch andere Lösungen, z.B. als PDF oder EML speichern / konvertieren, aber ich kenne deine Anforderung nicht. Das einzige komische an deinem Code ist, dass keine Kopie der Mail vor dem Export erstellt wird bzw. die Mail auch über NotesDocument gespeichert wird und das obwohl es einen Kommentar "Markiertes Dokument kopieren" gibt, vielleicht hast du auch nur ein Teil des Codes veröffentlicht :-:

CarstenH:

--- Zitat von: Legolas am 05.08.24 - 16:12:37 ---Ich benötige aus einem "Memo" Dokument das Body-Feld im HTML-Format

--- Ende Zitat ---

Die Funktion ist zwar ab R11 "veraltet" aber funktionierte bei mir bis zuletzt noch überall, wo ich sie mal gebraucht hatte.


--- Code: ---HTMLStrings$ = NotesRichTextItem.Converttohtml([options] ) As String

--- Ende Code ---

Beschreibung: https://help.hcl-software.com/dom_designer/9.0.1/appdev/H_CONVERTOHTML_METHOD_NOTESRICHTEXTITEM.html


--- Zitat von: Legolas am 05.08.24 - 16:12:37 ---Das Body Feld HTML im DXL Export wird nach 72 Zeichen immer umgebrochen und ich wies nicht warum.

--- Ende Zitat ---

"There are two limits ... on the number of characters in a line.
Each line of characters MUST be no more than 998 characters, and SHOULD be no more than 78 characters, excluding the CRLF."

http://www.ietf.org/rfc/rfc2822.txt

Achtung, hier kommt jetzt eine Vermutung: die tatsächlich verwendete Zeilenlänge könnte sich der ausführende Prozess aus den Einstellungen am Client holen, beim Server hängt die konkrete Länge und Position der Einstellung vermutlich davon ab, ob die MIME-Konvertierung durch LS, HTTP, Router, IMAP oder POP getriggert wird. Außerdem ist bei MIME Mails keine erneute Konvertierung notwendig, hier muss man aufpassen, wenn man per LS zugreift, damit man nicht das vorhandene MIME in RT konvertiert, um danach wieder zurück nach MIME zu konvertieren. Jede Konvertierung verursacht Reibungsverluste.


--- Zitat von: Legolas am 05.08.24 - 16:12:37 ---Umlaute werden nicht korrekt maskiert.

--- Ende Zitat ---

 ???


--- Zitat von: Legolas am 05.08.24 - 16:12:37 ---Das System verhält sich mit dem Formname "Memo" anders als mit dem Formnamen "MemoDummy"?

--- Ende Zitat ---

Anhand der Formularnamen "Memo" und "Reply" erkennen die Exportroutinen eine Mail.


--- Zitat von: Legolas am 05.08.24 - 16:12:37 ---Nur was ich mir einfach nicht vorstellen kann ist, dass selbst Notes im Jahr 2024 immer noch nicht den Mailinhalt als HTML exportieren kann.
--- Ende Zitat ---

Klar, das kann Notes durchaus seit Jahren, Outlook hingegen kann es nicht mal im Jahr 2024.
 
Allerdings verstehe ich nicht, was du genau bezweckst, wenn ich "HTML-Mail" lese, wo "MIME-Format" stehen sollte. Und natürlich müssen (wie bei anderen Mailclients auch) schon ein paar Randbedingungen erfüllt sein. Zum Beispiel die, dass man eine Mail, die man exportieren möchte, nicht im ersten Schritt mal eben zerstört indem mal Felder, von denen man glaubt, dass sie nicht benötigt werden, löscht. Oder was ist, wenn die Mail bereits im MIME-Format vorliegt? Oder die MIME-Parts enthalten vielleicht gar kein HTML sondern nur Plain-Text oder Attachments, was dann? Also nochmal Butter bei die Fische - was ist der Zweck des Ganzen?

Und wann wurde in deinem Post aus "Body-Feld einer E-Mail im HTML-Format exportieren" ein "E-Mail als HTML exportieren"? Das sind völlig verschiedene Dinge. Auf die erste Variante habe ich dir gleich zu Anfang eine mögliche Lösung genannt: NotesRichTextItem.ConvertToHTML

Der EML-Export hingegen ist komplexer, entweder machst du es über die dafür vorgesehenen Funktionen (Drag&Drop, DXL) oder passt dir funktionierenden Code anderer Mitstreiter an, da wird man hier im Forum mehrfach fündig, z.B. hier: https://atnotes.de/index.php/topic,61734.msg394786.html#msg394786

HTH
Carsten

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln