diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 31085ce5c..fde537d69 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -969,9 +969,8 @@ fn get_recipients<'a, S: AsRef, T: Iterator>(headers: T) -> let mut recipients: HashSet = Default::default(); for (hkey, hvalue) in headers { - let hkey = hkey.as_ref(); + let hkey = hkey.as_ref().to_lowercase(); let hvalue = hvalue.as_ref(); - if hkey == "to" || hkey == "cc" { if let Ok(addrs) = mailparse::addrparse(hvalue) { for addr in addrs.iter() { @@ -1058,6 +1057,17 @@ mod tests { assert_eq!(mimeparser.get_rfc724_mid(), None); } + #[test] + fn test_get_recipients() { + let context = dummy_context(); + let raw = include_bytes!("../test-data/message/mail_with_cc.txt"); + let mimeparser = MimeParser::from_bytes(&context.ctx, &raw[..]).unwrap(); + let recipients = get_recipients(mimeparser.header.iter()); + assert!(recipients.contains("abc@bcd.com")); + assert!(recipients.contains("def@def.de")); + assert_eq!(recipients.len(), 2); + } + #[test] fn test_mailparse_content_type() { let ctype = diff --git a/test-data/message/mail_with_cc.txt b/test-data/message/mail_with_cc.txt new file mode 100644 index 000000000..02b749ffd --- /dev/null +++ b/test-data/message/mail_with_cc.txt @@ -0,0 +1,14 @@ +Return-Path: +Received: from hq5.merlinux.eu + by hq5.merlinux.eu (Dovecot) with LMTP id yRKOBakcfV1AewAAPzvFDg + ; Sat, 14 Sep 2019 19:00:25 +0200 +Received: from localhost (unknown 7.165.105.24]) + by hq5.merlinux.eu (Postfix) with ESMTPSA id 8D9844E023; + Sat, 14 Sep 2019 19:00:22 +0200 (CEST) +message-id: <2dfdbde7@example.org> +Date: Sat, 14 Sep 2019 19:00:13 +0200 +From: lmn +To: abc +CC: def + +hi