server: Send an email with the test command
This commit is contained in:
committed by
nitnelave
parent
2a90443ed8
commit
617a0f53fa
31
server/src/infra/mail.rs
Normal file
31
server/src/infra/mail.rs
Normal 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(())
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user