diff --git a/.changeset/fix-gmail-cc-header-case.md b/.changeset/fix-gmail-cc-header-case.md new file mode 100644 index 000000000..a6313e004 --- /dev/null +++ b/.changeset/fix-gmail-cc-header-case.md @@ -0,0 +1,5 @@ +--- +"@googleworkspace/cli": patch +--- + +Preserve Gmail Cc recipients when the API returns a differently cased header name. diff --git a/crates/google-workspace-cli/src/helpers/gmail/mod.rs b/crates/google-workspace-cli/src/helpers/gmail/mod.rs index caeb8b6b0..bda3b6e03 100644 --- a/crates/google-workspace-cli/src/helpers/gmail/mod.rs +++ b/crates/google-workspace-cli/src/helpers/gmail/mod.rs @@ -262,7 +262,9 @@ fn parse_message_headers(headers: &[Value]) -> ParsedMessageHeaders { "From" => parsed.from = value.to_string(), "Reply-To" => append_address_list_header_value(&mut parsed.reply_to, value), "To" => append_address_list_header_value(&mut parsed.to, value), - "Cc" => append_address_list_header_value(&mut parsed.cc, value), + _ if name.eq_ignore_ascii_case("Cc") => { + append_address_list_header_value(&mut parsed.cc, value) + } "Subject" => parsed.subject = value.to_string(), "Date" => parsed.date = value.to_string(), "Message-ID" | "Message-Id" => parsed.message_id = value.to_string(), @@ -2034,6 +2036,18 @@ mod tests { assert!(to.contains("alice@example.com")); } + #[test] + fn test_parse_message_headers_preserves_cc_regardless_of_header_case() { + let headers = vec![ + json!({"name": "CC", "value": "alice@example.com"}), + json!({"name": "cc", "value": "bob@example.com"}), + ]; + + let parsed = parse_message_headers(&headers); + + assert_eq!(parsed.cc, "alice@example.com, bob@example.com"); + } + #[test] fn test_to_mb_address_with_display_name() { let mailbox = Mailbox::parse("Alice Smith ");