Use map_err in Smtp.connect() instead of match

This commit is contained in:
Alexander Krotov
2019-12-03 12:29:01 +03:00
parent af0b7e4701
commit e22b4e8430

View File

@@ -80,15 +80,12 @@ impl Smtp {
return Err(Error::BadParameters); return Err(Error::BadParameters);
} }
self.from = match EmailAddress::new(lp.addr.clone()) { let from =
Ok(addr) => Some(addr), EmailAddress::new(lp.addr.clone()).map_err(|err| Error::InvalidLoginAddress {
Err(err) => {
return Err(Error::InvalidLoginAddress {
address: lp.addr.clone(), address: lp.addr.clone(),
error: err, error: err,
}) })?;
} self.from = Some(from);
};
let domain = &lp.send_server; let domain = &lp.send_server;
let port = lp.send_port as u16; let port = lp.send_port as u16;
@@ -135,30 +132,23 @@ impl Smtp {
lettre::smtp::ClientSecurity::Wrapper(tls_parameters) lettre::smtp::ClientSecurity::Wrapper(tls_parameters)
}; };
match lettre::smtp::SmtpClient::new((domain.as_str(), port), security) { let client = lettre::smtp::SmtpClient::new((domain.as_str(), port), security)
Ok(client) => { .map_err(Error::ConnectionSetupFailure)?;
let client = client let client = client
.smtp_utf8(true) .smtp_utf8(true)
.credentials(creds) .credentials(creds)
.authentication_mechanism(mechanism) .authentication_mechanism(mechanism)
.connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited); .connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited);
let mut trans = client.transport(); let mut trans = client.transport();
match trans.connect() { trans.connect().map_err(Error::ConnectionFailure)?;
Ok(()) => {
self.transport = Some(trans); self.transport = Some(trans);
self.transport_connected = true; self.transport_connected = true;
context.call_cb(Event::SmtpConnected(format!( context.call_cb(Event::SmtpConnected(format!(
"SMTP-LOGIN as {} ok", "SMTP-LOGIN as {} ok",
lp.send_user, lp.send_user,
))); )));
return Ok(()); Ok(())
}
Err(err) => return Err(Error::ConnectionFailure(err)),
}
}
Err(err) => {
return Err(Error::ConnectionSetupFailure(err));
}
}
} }
} }