aboutsummaryrefslogtreecommitdiff
path: root/src/mail.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mail.rs')
-rw-r--r--src/mail.rs37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/mail.rs b/src/mail.rs
index 81e23282..cb50e364 100644
--- a/src/mail.rs
+++ b/src/mail.rs
@@ -1,4 +1,3 @@
-use std::error::Error;
use native_tls::{Protocol, TlsConnector};
use lettre::{Transport, SmtpTransport, SmtpClient, ClientTlsParameters, ClientSecurity};
use lettre::smtp::ConnectionReuseParameters;
@@ -9,25 +8,24 @@ use MailConfig;
fn mailer(config: &MailConfig) -> SmtpTransport {
let client_security = if config.smtp_ssl {
- let mut tls_builder = TlsConnector::builder();
- tls_builder.min_protocol_version(Some(Protocol::Tlsv11));
- ClientSecurity::Required(
- ClientTlsParameters::new(config.smtp_host.to_owned(), tls_builder.build().unwrap())
- )
+ let tls = TlsConnector::builder()
+ .min_protocol_version(Some(Protocol::Tlsv11))
+ .build()
+ .unwrap();
+
+ ClientSecurity::Required(ClientTlsParameters::new(config.smtp_host.clone(), tls))
} else {
ClientSecurity::None
};
let smtp_client = SmtpClient::new(
- (config.smtp_host.to_owned().as_str(), config.smtp_port),
- client_security
+ (config.smtp_host.as_str(), config.smtp_port),
+ client_security,
).unwrap();
let smtp_client = match (&config.smtp_username, &config.smtp_password) {
- (Some(username), Some(password)) => {
- smtp_client.credentials(Credentials::new(username.to_owned(), password.to_owned()))
- },
- (_, _) => smtp_client,
+ (Some(user), Some(pass)) => smtp_client.credentials(Credentials::new(user.clone(), pass.clone())),
+ _ => smtp_client,
};
smtp_client
@@ -46,18 +44,19 @@ pub fn send_password_hint(address: &str, hint: Option<String>, config: &MailConf
hint))
} else {
("Sorry, you have no password hint...",
- "Sorry, you have not specified any password hint...\n".to_string())
+ "Sorry, you have not specified any password hint...\n".into())
};
let email = EmailBuilder::new()
.to(address)
- .from((config.smtp_from.to_owned(), "Bitwarden-rs"))
+ .from((config.smtp_from.clone(), "Bitwarden-rs"))
.subject(subject)
.body(body)
- .build().unwrap();
+ .build()
+ .map_err(|e| e.to_string())?;
- match mailer(config).send(email.into()) {
- Ok(_) => Ok(()),
- Err(e) => Err(e.description().to_string()),
- }
+ mailer(config)
+ .send(email.into())
+ .map_err(|e| e.to_string())
+ .and(Ok(()))
}