diff --git a/src/modules/cli/mbox/mod.rs b/src/modules/cli/mbox/mod.rs index 4234ec7..7a6a401 100644 --- a/src/modules/cli/mbox/mod.rs +++ b/src/modules/cli/mbox/mod.rs @@ -27,6 +27,7 @@ use crate::modules::cli::BichonCtlConfig; use console::style; use dialoguer::{theme::ColorfulTheme, Input}; use dialoguer::{Confirm, Select}; +use mail_parser::parsers::MessageStream; use mail_parser::MessageParser; use reqwest::Client; @@ -152,11 +153,15 @@ pub async fn run_import( let folder_name = match target_folder { Some(ref folder_name) => folder_name.clone(), None => { - let labels = message - .header("X-Gmail-Labels") - .and_then(|h| h.as_text()) - .unwrap_or("Inbox"); - determine_folder(labels) + let gmail_labels = message.header_raw("X-Gmail-Labels").unwrap_or("INBOX"); + let text_cow = MessageStream::new(gmail_labels.as_bytes()) + .parse_unstructured() + .into_text(); + let data: &str = match &text_cow { + Some(c) => c.as_ref(), + None => "INBOX", + }; + determine_folder(data) } }; let b64_eml = base64_encode_url_safe!(&body); diff --git a/src/modules/imap/tests.rs b/src/modules/imap/tests.rs index 5478cc4..0f52504 100644 --- a/src/modules/imap/tests.rs +++ b/src/modules/imap/tests.rs @@ -52,6 +52,7 @@ async fn test1() { #[tokio::test] async fn test2() { const MESSAGE: &str = r#"From: Art Vandelay (Vandelay Industries) +X-Gmail-Labels: =?UTF-8?Q?Archiv=C3=A9s,Envoy=C3=A9?= To: "Colleagues": "James Smythe" ; Friends: jane@example.com, =?UTF-8?Q?John_Sm=C3=AEth?= ; Date: Sat, 20 Nov 2021 14:22:01 -0800 @@ -93,16 +94,16 @@ R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 "#; let message = MessageParser::default().parse(MESSAGE).unwrap(); - let raw_subject = message.header_raw("Subject").unwrap().as_bytes(); + let header = message.header_raw("X-Gmail-Labels").unwrap().as_bytes(); - let data = MessageStream::new(raw_subject) + let data = MessageStream::new(header) .parse_unstructured() .unwrap_text() .to_string(); println!("{}", data); // RFC2047 support for encoded text in message readers - println!("{}", message.subject().unwrap()); + //println!("{}", message.subject().unwrap()); } #[tokio::test]