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) => { address: lp.addr.clone(),
return Err(Error::InvalidLoginAddress { error: err,
address: lp.addr.clone(), })?;
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
.smtp_utf8(true) let client = client
.credentials(creds) .smtp_utf8(true)
.authentication_mechanism(mechanism) .credentials(creds)
.connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited); .authentication_mechanism(mechanism)
let mut trans = client.transport(); .connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited);
match trans.connect() { let mut trans = client.transport();
Ok(()) => { trans.connect().map_err(Error::ConnectionFailure)?;
self.transport = Some(trans);
self.transport_connected = true; self.transport = Some(trans);
context.call_cb(Event::SmtpConnected(format!( self.transport_connected = true;
"SMTP-LOGIN as {} ok", context.call_cb(Event::SmtpConnected(format!(
lp.send_user, "SMTP-LOGIN as {} ok",
))); lp.send_user,
return Ok(()); )));
} Ok(())
Err(err) => return Err(Error::ConnectionFailure(err)),
}
}
Err(err) => {
return Err(Error::ConnectionSetupFailure(err));
}
}
} }
} }