diff options
Diffstat (limited to 'lib/rfc822/message.go')
-rw-r--r-- | lib/rfc822/message.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/rfc822/message.go b/lib/rfc822/message.go index 391ab3e5..26d790ff 100644 --- a/lib/rfc822/message.go +++ b/lib/rfc822/message.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "io" + "mime" "regexp" "strings" "time" @@ -284,6 +285,13 @@ func parseAddressList(h *mail.Header, key string) ([]*mail.Address, error) { // errors which are not fatal. return nil, err } + for _, addr := range addrs { + // Handle invalid headers with quoted *AND* encoded names + if strings.HasPrefix(addr.Name, "=?") && strings.HasSuffix(addr.Name, "?=") { + d := mime.WordDecoder{CharsetReader: message.CharsetReader} + addr.Name, _ = d.DecodeHeader(addr.Name) + } + } // If we got at least one address, ignore any returned error. return addrs, nil } |