diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-06-18 19:45:44 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-06-18 19:45:44 +0200 |
| commit | b7d00d1e1453e66126fc5feda11aac7033b337c4 (patch) | |
| tree | ce7cacb62a9ac5e9a3dacc3eed9f1b3e16287484 /pkg/email/parser.go | |
| parent | e79c9d2b4369454ed5a020b3e2dc6ae536afd815 (diff) | |
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.
Diffstat (limited to 'pkg/email/parser.go')
| -rw-r--r-- | pkg/email/parser.go | 7 |
1 files changed, 5 insertions, 2 deletions
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")) |
