diff --git a/pkg/message/parser.go b/pkg/message/parser.go index fce95a81..f90fda79 100644 --- a/pkg/message/parser.go +++ b/pkg/message/parser.go @@ -197,6 +197,9 @@ func convertForeignEncodings(p *parser.Parser) error { return p.NewWalker(). RegisterContentTypeHandler("text/html", func(p *parser.Part) error { + if p.IsAttachment() { + return nil + } if err := p.ConvertToUTF8(); err != nil { return err } @@ -313,24 +316,14 @@ func collectBodyParts(p *parser.Parser, preferredContentType string) (parser.Par return bestChoice(childParts, preferredContentType), nil }). RegisterRule("text/plain", func(p *parser.Part, visit parser.Visit) (interface{}, error) { - disp, _, err := p.ContentDisposition() - if err != nil { - disp = "" - } - - if disp == "attachment" { + if p.IsAttachment() { return parser.Parts{}, nil } return parser.Parts{p}, nil }). RegisterRule("text/html", func(p *parser.Part, visit parser.Visit) (interface{}, error) { - disp, _, err := p.ContentDisposition() - if err != nil { - disp = "" - } - - if disp == "attachment" { + if p.IsAttachment() { return parser.Parts{}, nil } diff --git a/pkg/message/parser/handler.go b/pkg/message/parser/handler.go index 4f719541..57873589 100644 --- a/pkg/message/parser/handler.go +++ b/pkg/message/parser/handler.go @@ -33,7 +33,7 @@ func (h *handler) matchPart(p *Part) bool { } func (h *handler) matchPartSkipAttachment(p *Part) bool { - return !p.isAttachment() && h.matchPart(p) + return !p.IsAttachment() && h.matchPart(p) } func (h *handler) matchType(p *Part) bool { diff --git a/pkg/message/parser/part.go b/pkg/message/parser/part.go index 7382a28c..8a259efc 100644 --- a/pkg/message/parser/part.go +++ b/pkg/message/parser/part.go @@ -209,7 +209,7 @@ func (p *Part) isMultipartMixedOrRelated() bool { return t == "multipart/mixed" || t == "multipart/related" } -func (p *Part) isAttachment() bool { +func (p *Part) IsAttachment() bool { disp, _, err := p.ContentDisposition() if err != nil { disp = "" diff --git a/tests/features/smtp/send/plain_to_internal.feature b/tests/features/smtp/send/plain_to_internal.feature index 72b3e66c..03feb069 100644 --- a/tests/features/smtp/send/plain_to_internal.feature +++ b/tests/features/smtp/send/plain_to_internal.feature @@ -184,9 +184,7 @@ Feature: SMTP sending of PLAIN messages to Internal recipient Content-Disposition: attachment; filename="index.html" Content-Transfer-Encoding: base64 - IDwhRE9DVFlQRSBodG1sPg0KPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5QYWdlIFRpdGxlPC90 - aXRsZT4NCjwvaGVhZD4NCjxib2R5Pg0KDQo8aDE+TXkgRmlyc3QgSGVhZGluZzwvaDE+DQo8 - cD5NeSBmaXJzdCBwYXJhZ3JhcGguPC9wPg0KDQo8L2JvZHk+DQo8L2h0bWw+IA== + PCFET0NUWVBFIGh0bWw+ --------------WI90RPIYF20K6dGXjs7dm2mi Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document; name="test.docx" @@ -669,7 +667,7 @@ Feature: SMTP sending of PLAIN messages to Internal recipient "content-disposition": "attachment", "content-disposition-filename": "index.html", "transfer-encoding": "base64", - "body-is": "PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+Cjx0aXRsZT5QYWdlIFRpdGxlPC90aXRsZT4KPC9o\r\nZWFkPgo8Ym9keT4KCjxoMT5NeSBGaXJzdCBIZWFkaW5nPC9oMT4KPHA+TXkgZmlyc3QgcGFyYWdy\r\nYXBoLjwvcD4KCgogPC9ib2R5PjwvaHRtbD4=" + "body-is": "PCFET0NUWVBFIGh0bWw+" }, { "content-type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",