diff --git a/crates/kumod/src/smtp_server.rs b/crates/kumod/src/smtp_server.rs index b3541080..1d875ef4 100644 --- a/crates/kumod/src/smtp_server.rs +++ b/crates/kumod/src/smtp_server.rs @@ -303,14 +303,11 @@ mod test { ); assert_equal!( Command::parse("MAIL From:<>").unwrap(), - Command::Mail(EnvelopeAddress::Null) + Command::Mail(EnvelopeAddress::null_sender()) ); assert_equal!( Command::parse("MAIL From:").unwrap(), - Command::Mail(EnvelopeAddress::Mailbox { - user: "user".to_string(), - domain: "example.com".to_string() - }) + Command::Mail(EnvelopeAddress::parse("user@example.com").unwrap()) ); assert_equal!( Command::parse("rcpt to:<>").unwrap_err().to_string(), @@ -318,10 +315,7 @@ mod test { ); assert_equal!( Command::parse("rcpt TO:").unwrap(), - Command::Rcpt(EnvelopeAddress::Mailbox { - user: "user".to_string(), - domain: "example.com".to_string() - }) + Command::Rcpt(EnvelopeAddress::parse("user@example.com").unwrap()) ); } } diff --git a/crates/message/src/address.rs b/crates/message/src/address.rs index f7ccca82..c11a7cce 100644 --- a/crates/message/src/address.rs +++ b/crates/message/src/address.rs @@ -8,7 +8,7 @@ pub struct EnvelopeAddress(String); impl EnvelopeAddress { pub fn parse(text: &str) -> anyhow::Result { if text.is_empty() { - Ok(Self("".to_string())) + Ok(Self::null_sender()) } else { let fields: Vec<&str> = text.split('@').collect(); anyhow::ensure!(fields.len() == 2, "expected user@domain"); @@ -30,6 +30,10 @@ impl EnvelopeAddress { None => "", } } + + pub fn null_sender() -> Self { + Self("".to_string()) + } } impl UserData for EnvelopeAddress { diff --git a/crates/message/src/lib.rs b/crates/message/src/lib.rs index 35999410..64dc7dc7 100644 --- a/crates/message/src/lib.rs +++ b/crates/message/src/lib.rs @@ -1,5 +1,5 @@ pub mod address; pub mod message; -pub use address::EnvelopeAddress; -pub use message::Message; +pub use crate::address::EnvelopeAddress; +pub use crate::message::Message;