diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-01-24 19:37:00 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-01-24 19:37:00 +0100 |
| commit | 866f1102f786c19a67e3857f891eaf5107550663 (patch) | |
| tree | d524606c39b8ad3955926a7c17a7a9a5221ed2f4 | |
| parent | 9a6ff11ff98e8137871648ee1a35a0a0e0b57adb (diff) | |
pkg/email: handle emails without Content-Type header
git-send-email sends emails without Content-Type,
let's assume it's text.
| -rw-r--r-- | pkg/email/parser.go | 11 | ||||
| -rw-r--r-- | pkg/email/parser_test.go | 1 |
2 files changed, 8 insertions, 4 deletions
diff --git a/pkg/email/parser.go b/pkg/email/parser.go index 37490af1d..702c17a0c 100644 --- a/pkg/email/parser.go +++ b/pkg/email/parser.go @@ -246,9 +246,14 @@ func extractArgsLine(body []byte) string { } func parseBody(r io.Reader, headers mail.Header) (body []byte, attachments [][]byte, err error) { - mediaType, params, err := mime.ParseMediaType(headers.Get("Content-Type")) - if err != nil { - return nil, nil, fmt.Errorf("failed to parse email header 'Content-Type': %v", err) + // git-send-email sends emails without Content-Type, let's assume it's text. + mediaType := "text/plain" + var params map[string]string + if contentType := headers.Get("Content-Type"); contentType != "" { + mediaType, params, err = mime.ParseMediaType(headers.Get("Content-Type")) + if err != nil { + 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" { diff --git a/pkg/email/parser_test.go b/pkg/email/parser_test.go index ed4a76f27..69e237806 100644 --- a/pkg/email/parser_test.go +++ b/pkg/email/parser_test.go @@ -320,7 +320,6 @@ Message-ID: <123> Subject: test subject From: Bob <bob@example.com> To: syzbot <bot@example.com>, Alice <alice@example.com> -Content-Type: text/plain #syz invalid text body |
