From b415edcfe0a8756ef5e932d7d8c4d94979ad5b9b Mon Sep 17 00:00:00 2001 From: Constantin Berhard Date: Sat, 22 Oct 2016 18:11:35 +0200 Subject: [PATCH] refactor(email): requested changes for PR #94 renamed variables meaningfully return more errors in email building modified some comments PR #94 --- src/email/mod.rs | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/email/mod.rs b/src/email/mod.rs index a55d3e5..b35847e 100644 --- a/src/email/mod.rs +++ b/src/email/mod.rs @@ -271,22 +271,22 @@ impl Envelope { } } /// Adds a receiver - pub fn to>(mut self, adr: S) -> Self { - self.add_to(adr); + pub fn to>(mut self, address: S) -> Self { + self.add_to(address); self } /// Adds a receiver - pub fn add_to>(&mut self, adr: S) { - self.to.push(adr.into()); + pub fn add_to>(&mut self, address: S) { + self.to.push(address.into()); } /// Sets the sender - pub fn from>(mut self, adr: S) -> Self { - self.set_from(adr); + pub fn from>(mut self, address: S) -> Self { + self.set_from(address); self } /// Sets the sender - pub fn set_from>(&mut self, adr: S) { - self.from = adr.into(); + pub fn set_from>(&mut self, address: S) { + self.from = address.into(); } } @@ -615,8 +615,8 @@ impl EmailBuilder { // we need to generate the envelope let mut e = Envelope::new(); // add all receivers in to_header and cc_header - for a in self.to_header.iter().chain(self.cc_header.iter()) { - match *a { + for receiver in self.to_header.iter().chain(self.cc_header.iter()) { + match *receiver { Address::Mailbox(ref m) => e.add_to(m.address.clone()), Address::Group(_, ref ms) => { for m in ms.iter() { @@ -631,20 +631,21 @@ impl EmailBuilder { e.set_from(match self.sender_header { Some(x) => x.address.clone(), // if we have a sender_header, use it None => { + // use a from header debug_assert!(self.from_header.len()<=1); // else we'd have sender_header match self.from_header.first() { Some(a) => match *a { - // if we have a sender_header - Address::Mailbox(ref m) => m.address.clone(), // use it - Address::Group(_,ref ms) => match ms.first() { + // if we have a from header + Address::Mailbox(ref mailbox) => mailbox.address.clone(), // use it + Address::Group(_,ref mailbox_list) => match mailbox_list.first() { // if it's an author group, use the first author - Some(m) => m.address.clone(), + Some(mailbox) => mailbox.address.clone(), // for an empty author group (the rarest of the rare cases) - None => String::new(), // empty envelope sender + None => return Err(Error::MissingFrom), // empty envelope sender }, }, - // if we don't have a sender_header - None => String::new(), // empty envelope sender + // if we don't have a from header + None => return Err(Error::MissingFrom), // empty envelope sender } } }); @@ -659,6 +660,8 @@ impl EmailBuilder { if !self.from_header.is_empty() { self.message .add_header(Header::new_with_value("From".into(), self.from_header).unwrap()); + } else { + return Err(Error::MissingFrom); } if !self.cc_header.is_empty() { self.message.add_header(Header::new_with_value("Cc".into(), self.cc_header).unwrap());