diff --git a/src/transport/smtp/client/async_connection.rs b/src/transport/smtp/client/async_connection.rs index 88c7eb5..40b0769 100644 --- a/src/transport/smtp/client/async_connection.rs +++ b/src/transport/smtp/client/async_connection.rs @@ -295,7 +295,10 @@ impl AsyncSmtpConnection { return if response.is_positive() { Ok(response) } else { - Err(error::code(response.code())) + Err(error::code( + response.code(), + response.first_line().map(|s| s.to_owned()), + )) } } Err(nom::Err::Failure(e)) => { diff --git a/src/transport/smtp/client/connection.rs b/src/transport/smtp/client/connection.rs index 4de1339..c1876df 100644 --- a/src/transport/smtp/client/connection.rs +++ b/src/transport/smtp/client/connection.rs @@ -276,7 +276,10 @@ impl SmtpConnection { return if response.is_positive() { Ok(response) } else { - Err(error::code(response.code())) + Err(error::code( + response.code(), + response.first_line().map(|s| s.to_owned()), + )) }; } Err(nom::Err::Failure(e)) => { diff --git a/src/transport/smtp/error.rs b/src/transport/smtp/error.rs index 675d7c5..555cb42 100644 --- a/src/transport/smtp/error.rs +++ b/src/transport/smtp/error.rs @@ -154,10 +154,10 @@ impl StdError for Error { } } -pub(crate) fn code(c: Code) -> Error { +pub(crate) fn code(c: Code, s: Option) -> Error { match c.severity { - Severity::TransientNegativeCompletion => Error::new::(Kind::Transient(c), None), - Severity::PermanentNegativeCompletion => Error::new::(Kind::Permanent(c), None), + Severity::TransientNegativeCompletion => Error::new(Kind::Transient(c), s), + Severity::PermanentNegativeCompletion => Error::new(Kind::Permanent(c), s), _ => client("Unknown error code"), } }