diff --git a/lettre_email/src/lib.rs b/lettre_email/src/lib.rs index 4475870..43211f8 100644 --- a/lettre_email/src/lib.rs +++ b/lettre_email/src/lib.rs @@ -430,6 +430,10 @@ impl EmailBuilder { if !self.from.is_empty() { self.message = self.message .header(Header::new_with_value("From".into(), self.from).unwrap()); + } else if let Some(from) = envelope.from() { + let from = vec![Address::new_mailbox(from.to_string())]; + self.message = self.message + .header(Header::new_with_value("From".into(), from).unwrap()); } else { Err(EmailError::Envelope { error: LettreError::MissingFrom, diff --git a/lettre_email/tests/build_with_envelope.rs b/lettre_email/tests/build_with_envelope.rs new file mode 100644 index 0000000..a2f1571 --- /dev/null +++ b/lettre_email/tests/build_with_envelope.rs @@ -0,0 +1,32 @@ +extern crate lettre_email; +extern crate lettre; +use lettre_email::EmailBuilder; +use lettre::{EmailAddress, Envelope}; + +#[test] +fn build_with_envelope_test() { + let e = Envelope::new( + Some(EmailAddress::new("from@example.org".to_string()).unwrap()), + vec![EmailAddress::new("to@example.org".to_string()).unwrap()], + ).unwrap(); + let _email = EmailBuilder::new() + .envelope(e) + .subject("subject") + .text("message") + .build() + .unwrap(); +} + +#[test] +fn build_with_envelope_without_from_test() { + let e = Envelope::new( + None, + vec![EmailAddress::new("to@example.org".to_string()).unwrap()], + ).unwrap(); + let _email = EmailBuilder::new() + .envelope(e) + .subject("subject") + .text("message") + .build() + .unwrap_err(); +} \ No newline at end of file