diff options
Diffstat (limited to 'melib/src')
-rw-r--r-- | melib/src/email/mailto.rs | 10 | ||||
-rw-r--r-- | melib/src/email/parser.rs | 8 |
2 files changed, 15 insertions, 3 deletions
diff --git a/melib/src/email/mailto.rs b/melib/src/email/mailto.rs index a5ecaa15..efec1bb7 100644 --- a/melib/src/email/mailto.rs +++ b/melib/src/email/mailto.rs @@ -23,7 +23,7 @@ use super::*; use std::convert::TryFrom; -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct Mailto { pub address: Address, pub subject: Option<String>, @@ -47,7 +47,13 @@ impl From<Mailto> for Draft { ret.set_header("Bcc", bcc.unwrap_or_default()); ret.set_body(body.unwrap_or_default()); ret.set_header("To", address.to_string()); - debug!(ret) + ret + } +} + +impl From<&Mailto> for Draft { + fn from(val: &Mailto) -> Self { + Draft::from(val.clone()) } } diff --git a/melib/src/email/parser.rs b/melib/src/email/parser.rs index 72f64885..efb66fa8 100644 --- a/melib/src/email/parser.rs +++ b/melib/src/email/parser.rs @@ -184,6 +184,12 @@ impl From<nom::Err<nom::error::Error<&[u8]>>> for Error { } } +impl<'i> From<ParsingError<&'i [u8]>> for nom::error::Error<&'i [u8]> { + fn from(val: ParsingError<&'i [u8]>) -> nom::error::Error<&'i [u8]> { + nom::error::Error::new(val.input, ErrorKind::Satisfy) + } +} + macro_rules! is_ctl_or_space { ($var:ident) => { /* <any ASCII control character and DEL> */ @@ -952,7 +958,7 @@ pub mod generic { let value = String::from_utf8_lossy(&input[..value_end]).to_string(); match tag { b"subject" if subject.is_none() => { - subject = Some(value); + subject = Some(value.replace("%20", " ")); } b"cc" if cc.is_none() => { cc = Some(value); |