diff --git a/melib/src/email/mailto.rs b/melib/src/email/mailto.rs index 8c76ebf9..85d4325c 100644 --- a/melib/src/email/mailto.rs +++ b/melib/src/email/mailto.rs @@ -368,16 +368,19 @@ mod tests { // Email address: "oh\\no"@example.org; corresponding 'mailto' URI: // . + assert_eq!( + mlt!("mailto:%22not%40me%22@example.org").address, + vec![addr!(r#""not@me"@example.org"#)] + ); // Email address: "\\\"it's\ ugly\\\""@example.org; corresponding // 'mailto' URI: // . - // [ref:FIXME] - //assert_eq!( - // mlt!("mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org"). - // address, vec![addr!(r#"\"it's ugly\"@example.org"#)] - //); + assert_eq!( + mlt!("mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org").address, + vec![addr!(r#""\\\"it's\ ugly\\\""@example.org"#)] + ); // When an email address itself includes an "&" (ampersand) character, that // character has to be percent-encoded. For example, the 'mailto' URI diff --git a/melib/src/email/parser.rs b/melib/src/email/parser.rs index 0573ec81..b03f77d7 100644 --- a/melib/src/email/parser.rs +++ b/melib/src/email/parser.rs @@ -1413,7 +1413,7 @@ pub mod generic { if input[0].is_ascii_alphanumeric() || [ b'!', b'#', b'$', b'%', b'&', b'\'', b'*', b'+', b'-', b'/', b'=', b'?', b'^', - b'_', b'`', b'{', b'|', b'}', b'~', + b'_', b'`', b'{', b'|', b'}', b'~', b'\\', ] .contains(&input[0]) {