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_handler; | ||||||
| pub mod ldap_server; | pub mod ldap_server; | ||||||
| pub mod logging; | pub mod logging; | ||||||
|  | pub mod mail; | ||||||
| pub mod sql_backend_handler; | pub mod sql_backend_handler; | ||||||
| pub mod tcp_backend_handler; | pub mod tcp_backend_handler; | ||||||
| pub mod tcp_server; | pub mod tcp_server; | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ use crate::{ | |||||||
|         sql_opaque_handler::register_password, |         sql_opaque_handler::register_password, | ||||||
|         sql_tables::PoolOptions, |         sql_tables::PoolOptions, | ||||||
|     }, |     }, | ||||||
|     infra::{cli::*, configuration::Configuration, db_cleaner::Scheduler}, |     infra::{cli::*, configuration::Configuration, db_cleaner::Scheduler, mail}, | ||||||
| }; | }; | ||||||
| use actix::Actor; | use actix::Actor; | ||||||
| use anyhow::{anyhow, Context, Result}; | use anyhow::{anyhow, Context, Result}; | ||||||
| @ -99,11 +99,18 @@ fn run_server_command(opts: RunOpts) -> Result<()> { | |||||||
|     Ok(()) |     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<()> { | fn main() -> Result<()> { | ||||||
|     let cli_opts = infra::cli::init(); |     let cli_opts = infra::cli::init(); | ||||||
|     match cli_opts.command { |     match cli_opts.command { | ||||||
|         Command::ExportGraphQLSchema(opts) => infra::graphql::api::export_schema(opts), |         Command::ExportGraphQLSchema(opts) => infra::graphql::api::export_schema(opts), | ||||||
|         Command::Run(opts) => run_server_command(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