From 19568248c8bdb031004760d49df5045a85aa517b Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 15 Oct 2025 14:25:52 +0200 Subject: pkg/email: decode rfc2047 subjects It's not done transparently by the email library. Add a test that verifies the result. --- pkg/email/parser.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'pkg/email/parser.go') diff --git a/pkg/email/parser.go b/pkg/email/parser.go index 6db3d2415..7c776ec72 100644 --- a/pkg/email/parser.go +++ b/pkg/email/parser.go @@ -137,7 +137,7 @@ func Parse(r io.Reader, ownEmails, goodLists, domains []string) (*Email, error) return nil, err } bodyStr := string(body) - subject := msg.Header.Get("Subject") + subject := decodeSubject(msg.Header.Get("Subject")) var cmds []*SingleCommand var patch string if !fromMe { @@ -565,3 +565,13 @@ func RemoveFromEmailList(list []string, toRemove string) []string { } return result } + +// Decode RFC 2047-encoded subjects. +func decodeSubject(rawSubject string) string { + decoder := new(mime.WordDecoder) + decodedSubject, err := decoder.DecodeHeader(rawSubject) + if err != nil { + return rawSubject + } + return decodedSubject +} -- cgit mrf-deployment