From ad83eab930f126fd4c367d65d5304eac6c3649d1 Mon Sep 17 00:00:00 2001 From: Aine Date: Sat, 19 Nov 2022 00:48:48 +0200 Subject: [PATCH] force removal in html part of incoming emails --- utils/email.go | 10 +++++----- utils/html.go | 44 -------------------------------------------- 2 files changed, 5 insertions(+), 49 deletions(-) delete mode 100644 utils/html.go diff --git a/utils/email.go b/utils/email.go index 66071e5..34b03e3 100644 --- a/utils/email.go +++ b/utils/email.go @@ -6,6 +6,7 @@ import ( "encoding/pem" "fmt" "net/mail" + "regexp" "strings" "time" @@ -16,6 +17,8 @@ import ( "maunium.net/go/mautrix/id" ) +var styleRegex = regexp.MustCompile("") + // IncomingFilteringOptions for incoming mail type IncomingFilteringOptions interface { SpamcheckSMTP() bool @@ -82,11 +85,8 @@ func NewEmail(messageID, inReplyTo, references, subject, from, to, text, html st } if html != "" { - var err error - html, err = StripHTMLTag(html, "style") - if err == nil { - email.HTML = html - } + html = styleRegex.ReplaceAllString(html, "") + email.HTML = html } return email diff --git a/utils/html.go b/utils/html.go deleted file mode 100644 index 35e477b..0000000 --- a/utils/html.go +++ /dev/null @@ -1,44 +0,0 @@ -package utils - -import ( - "bytes" - "strings" - - "golang.org/x/net/html" -) - -// StripHTMLTag from text -// -// Source: https://siongui.github.io/2018/01/16/go-remove-html-inline-style/ -func StripHTMLTag(text, tag string) (string, error) { - doc, err := html.Parse(strings.NewReader(text)) - if err != nil { - return "", err - } - stripHTMLTag(doc, tag) - - var out bytes.Buffer - err = html.Render(&out, doc) - if err != nil { - return "", err - } - - return out.String(), nil -} - -func stripHTMLTag(node *html.Node, tag string) { - i := -1 - for index, attr := range node.Attr { - if attr.Key == tag { - i = index - break - } - } - if i != -1 { - node.Attr = append(node.Attr[:i], node.Attr[i+1:]...) - } - - for child := node.FirstChild; child != nil; child = child.NextSibling { - stripHTMLTag(child, tag) - } -}