summaryrefslogtreecommitdiff
path: root/melib/src
diff options
context:
space:
mode:
Diffstat (limited to 'melib/src')
-rw-r--r--melib/src/email/mailto.rs10
-rw-r--r--melib/src/email/parser.rs8
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);