From b7d00d1e1453e66126fc5feda11aac7033b337c4 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 18 Jun 2018 19:45:44 +0200 Subject: pkg/email: support quoted-printable emails We did not handle quoted-printable because mime package handles it. But we can have a non-mime email in quoted-printable. Simply handle it always, it's not hard. --- pkg/email/parser.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'pkg/email/parser.go') diff --git a/pkg/email/parser.go b/pkg/email/parser.go index 0894c24e7..7916a0e0e 100644 --- a/pkg/email/parser.go +++ b/pkg/email/parser.go @@ -11,6 +11,7 @@ import ( "io/ioutil" "mime" "mime/multipart" + "mime/quotedprintable" "net/mail" "regexp" "sort" @@ -256,8 +257,10 @@ func parseBody(r io.Reader, headers mail.Header) (body []byte, attachments [][]b return nil, nil, fmt.Errorf("failed to parse email header 'Content-Type': %v", err) } } - // Note: mime package handles quoted-printable internally. - if strings.ToLower(headers.Get("Content-Transfer-Encoding")) == "base64" { + switch strings.ToLower(headers.Get("Content-Transfer-Encoding")) { + case "quoted-printable": + r = quotedprintable.NewReader(r) + case "base64": r = base64.NewDecoder(base64.StdEncoding, r) } disp, _, _ := mime.ParseMediaType(headers.Get("Content-Disposition")) -- cgit mrf-deployment