From ed9f38d2c800b6f49c4bc395f9fc9b21b2eb1297 Mon Sep 17 00:00:00 2001 From: Alexis Mousset Date: Sun, 3 May 2020 22:03:45 +0200 Subject: [PATCH] feat(builder): Allow overriding envelope --- src/message/mod.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/message/mod.rs b/src/message/mod.rs index 2aa34c1..062dc5b 100644 --- a/src/message/mod.rs +++ b/src/message/mod.rs @@ -207,6 +207,7 @@ pub trait EmailFormat { #[derive(Debug, Clone)] pub struct MessageBuilder { headers: Headers, + envelope: Option, } impl MessageBuilder { @@ -214,6 +215,7 @@ impl MessageBuilder { pub fn new() -> Self { Self { headers: Headers::new(), + envelope: None, } } @@ -356,6 +358,12 @@ impl MessageBuilder { self.header(header::UserAgent(id)) } + /// Force specific envelope (by default it is derived from headers) + pub fn envelope(mut self, envelope: Envelope) -> Self { + self.envelope = Some(envelope); + self + } + fn insert_missing_headers(self) -> Self { let mut new = self; @@ -376,7 +384,10 @@ impl MessageBuilder { fn build(self, body: Body) -> Result { let res = self.insert_missing_headers(); - let envelope = Envelope::try_from(&res.headers)?; + let envelope = match res.envelope { + Some(e) => e, + None => Envelope::try_from(&res.headers)?, + }; Ok(Message { headers: res.headers, body,