mirror of
				https://github.com/nitnelave/lldap.git
				synced 2023-04-12 14:25:13 +00:00 
			
		
		
		
	server: Send an email with the test command
This commit is contained in:
		
							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; | ||||
|  | ||||
| @ -9,7 +9,7 @@ use crate::{ | ||||
|         sql_opaque_handler::register_password, | ||||
|         sql_tables::PoolOptions, | ||||
|     }, | ||||
|     infra::{cli::*, configuration::Configuration, db_cleaner::Scheduler}, | ||||
|     infra::{cli::*, configuration::Configuration, db_cleaner::Scheduler, mail}, | ||||
| }; | ||||
| use actix::Actor; | ||||
| use anyhow::{anyhow, Context, Result}; | ||||
| @ -99,11 +99,18 @@ fn run_server_command(opts: RunOpts) -> Result<()> { | ||||
|     Ok(()) | ||||
| } | ||||
| 
 | ||||
| fn send_test_email_command(opts: TestEmailOpts) -> Result<()> { | ||||
|     let to = opts.to.parse()?; | ||||
|     let config = infra::configuration::init(opts)?; | ||||
|     infra::logging::init(&config)?; | ||||
|     mail::send_test_email(to, &config.smtp_options) | ||||
| } | ||||
| 
 | ||||
| fn main() -> Result<()> { | ||||
|     let cli_opts = infra::cli::init(); | ||||
|     match cli_opts.command { | ||||
|         Command::ExportGraphQLSchema(opts) => infra::graphql::api::export_schema(opts), | ||||
|         Command::Run(opts) => run_server_command(opts), | ||||
|         Command::SendTestEmail(_opts) => Ok(()), | ||||
|         Command::SendTestEmail(opts) => send_test_email_command(opts), | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Valentin Tolmer
						Valentin Tolmer