feat(builder): Allow overriding envelope

This commit is contained in:
Alexis Mousset
2020-05-03 22:03:45 +02:00
parent 88df2a502d
commit ed9f38d2c8

View File

@@ -207,6 +207,7 @@ pub trait EmailFormat {
#[derive(Debug, Clone)]
pub struct MessageBuilder {
headers: Headers,
envelope: Option<Envelope>,
}
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<Message, EmailError> {
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,