server: Send an email with the test command

This commit is contained in:
Valentin Tolmer
2021-11-11 10:15:00 +01:00
committed by nitnelave
parent 2a90443ed8
commit 617a0f53fa
3 changed files with 41 additions and 2 deletions

31
server/src/infra/mail.rs Normal file
View File

@@ -0,0 +1,31 @@
use crate::infra::configuration::MailOptions;
use anyhow::Result;
use lettre::{
message::Mailbox, transport::smtp::authentication::Credentials, Message, SmtpTransport,
Transport,
};
use log::debug;
pub fn send_test_email(to: Mailbox, options: &MailOptions) -> Result<()> {
let from = options
.from
.clone()
.unwrap_or_else(|| "LLDAP <nobody@lldap>".parse().unwrap());
let reply_to = options.reply_to.clone().unwrap_or_else(|| from.clone());
debug!(
"Sending email to '{}' as '{}' via '{}'@'{}':'{}'",
&to, &from, &options.user, &options.server, options.port
);
let email = Message::builder()
.from(from)
.reply_to(reply_to)
.to(to)
.subject("LLDAP test email")
.body("The test is successful! You can send emails from LLDAP".to_string())?;
let creds = Credentials::new(options.user.clone(), options.password.clone());
let mailer = SmtpTransport::relay(&options.server)?
.credentials(creds)
.build();
mailer.send(&email)?;
Ok(())
}

View File

@@ -7,6 +7,7 @@ pub mod jwt_sql_tables;
pub mod ldap_handler;
pub mod ldap_server;
pub mod logging;
pub mod mail;
pub mod sql_backend_handler;
pub mod tcp_backend_handler;
pub mod tcp_server;