diff --git a/pkg/message/parser.go b/pkg/message/parser.go index f714a6fe..b0ff8730 100644 --- a/pkg/message/parser.go +++ b/pkg/message/parser.go @@ -552,6 +552,11 @@ func parseAttachment(h message.Header, body []byte) (Attachment, error) { att.Header = mimeHeader mimeType, mimeTypeParams, err := pmmime.ParseMediaType(h.Get("Content-Type")) + if err == pmmime.EmptyContentTypeErr { + mimeType = "text/plain" + err = nil + } + if err != nil { return Attachment{}, err } diff --git a/pkg/mime/encoding.go b/pkg/mime/encoding.go index 41e71063..0f363597 100644 --- a/pkg/mime/encoding.go +++ b/pkg/mime/encoding.go @@ -35,6 +35,8 @@ import ( "golang.org/x/text/encoding/htmlindex" ) +var EmptyContentTypeErr = errors.New("empty content type") + func init() { rfc822.ParseMediaType = ParseMediaType proton.CharsetReader = CharsetReader @@ -257,7 +259,7 @@ func DecodeCharset(original []byte, contentType string) ([]byte, error) { // ParseMediaType from MIME doesn't support RFC2231 for non asci / utf8 encodings so we have to pre-parse it. func ParseMediaType(v string) (string, map[string]string, error) { if v == "" { - return "", nil, errors.New("empty media type") + return "", nil, EmptyContentTypeErr } decoded, err := DecodeHeader(v) if err != nil {