1 use crate::settings::Settings;
4 authentication::{Credentials, Mechanism},
6 ConnectionReuseParameters,
12 use lettre_email::Email;
19 ) -> Result<(), String> {
20 let email_config = Settings::get().email.ok_or("no_email_setup")?;
22 let email = Email::builder()
23 .to((to_email, to_username))
24 .from(email_config.smtp_from_address.to_owned())
30 let mailer = if email_config.use_tls {
31 SmtpClient::new_simple(&email_config.smtp_server).unwrap()
33 SmtpClient::new(&email_config.smtp_server, ClientSecurity::None).unwrap()
35 .hello_name(ClientId::Domain(Settings::get().hostname))
37 .authentication_mechanism(Mechanism::Plain)
38 .connection_reuse(ConnectionReuseParameters::ReuseUnlimited);
39 let mailer = if let (Some(login), Some(password)) =
40 (&email_config.smtp_login, &email_config.smtp_password)
42 mailer.credentials(Credentials::new(login.to_owned(), password.to_owned()))
47 let mut transport = mailer.transport();
48 let result = transport.send(email.into());
53 Err(e) => Err(e.to_string()),