From 407c9fe1a6122227ded9b43512d392a8cff77254 Mon Sep 17 00:00:00 2001 From: Jakub Date: Tue, 10 Jan 2023 13:47:00 +0100 Subject: [PATCH] GODT-2181: Empty but not nil address from API --- pkg/message/build.go | 18 ++++++++++++++++-- tests/features/imap/message/import.feature | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/pkg/message/build.go b/pkg/message/build.go index 1920b91b..f31b20f7 100644 --- a/pkg/message/build.go +++ b/pkg/message/build.go @@ -381,6 +381,18 @@ func writeMultipartEncryptedRFC822(header message.Header, body []byte) ([]byte, return buf.Bytes(), nil } +func addressEmpty(address *mail.Address) bool { + if address == nil { + return true + } + + if address.Name == "" && address.Address == "" { + return true + } + + return false +} + func getMessageHeader(msg proton.Message, opts JobOptions) message.Header { //nolint:funlen hdr := toMessageHeader(msg.ParsedHeaders) @@ -390,12 +402,14 @@ func getMessageHeader(msg proton.Message, opts JobOptions) message.Header { //no } // mail.Address.String() will RFC2047-encode if necessary. - if msg.Sender != nil { + if !addressEmpty(msg.Sender) { hdr.Set("From", msg.Sender.String()) } if len(msg.ReplyTos) > 0 { - hdr.Set("Reply-To", toAddressList(msg.ReplyTos)) + if !(len(msg.ReplyTos) == 1 && addressEmpty(msg.ReplyTos[0])) { + hdr.Set("Reply-To", toAddressList(msg.ReplyTos)) + } } if len(msg.ToList) > 0 { diff --git a/tests/features/imap/message/import.feature b/tests/features/imap/message/import.feature index 82c06d8b..a3c36f0a 100644 --- a/tests/features/imap/message/import.feature +++ b/tests/features/imap/message/import.feature @@ -136,7 +136,7 @@ Feature: IMAP import messages | foo@example.com | bridgetest@pm.test | Hello | Hello | And IMAP client "1" sees 0 messages in "Inbox" - Scenario Outline: Import message without sender + Scenario Outline: Import message without sender to When IMAP client "1" appends the following message to "": """ To: Lionel Richie