In der Api.Html sind hilfreiche Methoden für den Umgang mit HTML-Strings

HtmlToPlainText

Die Methode extrahiert aus einem HTML nur den Text. Das Verhalten ist ähnlich zu Exchange, wenn es eine Mail sendet und den Inhalt auch als Plain-Text erzeugt, falls der Empfänger kein HTML kann oder aktiviert hat.

Es werden unterstützt:

  • Absätze jeglicher Art -> Zeilenumbruch
  • `
    ` -> Zeilenumbruch
  • Aufzählungen -> `* …`
  • HTML Entities (`ö` etc.)

Skripte und CSS-Stile werden entfernt.

PlainTextToHtml

Wandelt einen nicht-HTML Text in HTML um. Dabei werden:

  • Zeilenumbrüche zu `
    `,
  • aufeinanderfolgende Leerzeichen zu `&bnsp;  ` und
  • Sonderzeichen zu HTML Entitäten. (Kein XSS möglich)

CleanHtml

HTML aufräumen, neu formatieren und nur den Body extrahieren. (für HTML-Spalten)

HtmlEquals

Zwei HTML Inhalte semantisch vergleichen. Die Funktion liefert im Gegensatz zum String-Vergleich auch dann true, wenn der HTML-Inhalt gleich aussieht, z.B.: falls sich die HTML Inhalte nur in der Formatierung oder den Header-Informationen unterscheiden. Das funktioniert auch bei augescheinlich stark unterschiedlichen Fragmenten, aber eine 100% Garantie gibt es natürlich nicht. False negatives sind aber nicht zu erwarten.

Funktionen für Inline-Images

Alle diese Funktionen liefern den übergebenen String unverändert zurück, falls er nicht zu ihrem Verwendungszweck passt. Dadurch können mehrere Konverter nacheinander aufgerufen werden.

Beispiel:

html = Api.Html.VisitHtmlInlineTags(html,
    tag => Api.Html.VisitImgSrc(tag,
        src => Api.Html.InlineAttachmentToBase64Image(src)));
  • VisitHtmlInlineTags
    Durchsucht HTML Text nach Tags mit möglichem Inline-Content und ruft Visitor-Funktion auf, die diesen auch verändern kann.
  • VisitImgSrc
    Ruft für img-Tags Visitor für dessen src-Attribut auf, der dieses auch verändern kann.
    Gedacht für die Benutzung in VisitHtmlInlineTags.
  • Base64ImageToInlineAttachment
    Konvertiert Inline-Image-URL mit Base64 Inhalt in OrmAttachment, das per Content-ID (“cid:…”) über dessen OID referenziert wird.
    Gedacht für die Benutzung in VisitImgSrc.
  • InlineAttachmentToBase64Image
    Konvertiert Inline-Image-URL mit Content-ID in ein Base64 Inline-Image, dass keine externen Daten benötigt.
    Vorsicht, das kann riesige Datenmengen erzeugen!
    Gedacht für die Benutzung in VisitImgSrc.
  • ConvertInlineAttachmentsToDownloadUrl
    Konvertiert alle Inline-Attachment-URLs zu Download-URLs auf die aktuelle Anwendungsinstanz, die im Browser als img src funktionieren.
    Der Benutzer benötigt Leserechte, um die Download-URLs aufzulösen. Daher ist das weder für die langfristige Speicherung noch für die Weitergabe geeignet.
  • ConvertInlineAttachmentsToContentId
    Konvertiert alle Inline-Attachments-URLs zu Content-ID URLs. Diese funktionieren nur innerhalb von MIME-Nachrichten, und auch nur wenn die Dabei verwendeten Attachments auch in der MIME-Message hinzugefügt werden. Die Funktion liefert optional auch die erforderlichen Attachments.
  • ConvertContentIdToInlineAttachment
    Konvertiert alle Content-ID URLs zu internen Inline-Attachment URLs. Dies ist erforderlich, wenn HTML mit Inline Content von externen MIME Quellen importiert wird.