From a89a3f66126dda5727a3500681f223875ffa5ac3 Mon Sep 17 00:00:00 2001 From: Michal Horejsek Date: Thu, 24 Sep 2020 13:56:42 +0200 Subject: [PATCH] Convert to UTF-8 any message part which specifies charset --- pkg/message/parser.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkg/message/parser.go b/pkg/message/parser.go index df31e14d..1419b8b6 100644 --- a/pkg/message/parser.go +++ b/pkg/message/parser.go @@ -102,11 +102,12 @@ func convertForeignEncodings(p *parser.Parser) error { RegisterContentTypeHandler("text/.*", func(p *parser.Part) error { return p.ConvertToUTF8() }). - RegisterContentTypeHandler("multipart/alternative", func(p *parser.Part) error { - return p.ConvertToUTF8() - }). RegisterDefaultHandler(func(p *parser.Part) error { - t, _, _ := p.Header.ContentType() + t, params, _ := p.Header.ContentType() + // multipart/alternative, for example, can contain extra charset. + if params != nil && params["charset"] != "" { + return p.ConvertToUTF8() + } logrus.WithField("type", t).Trace("Not converting part to utf-8") return nil }).