diff --git a/backend/windmill-api/src/settings.rs b/backend/windmill-api/src/settings.rs index 4747775721..63be49e1b9 100644 --- a/backend/windmill-api/src/settings.rs +++ b/backend/windmill-api/src/settings.rs @@ -56,9 +56,16 @@ pub async fn test_email( require_super_admin(&db, &authed.email).await?; let smtp = test_email.smtp; let to = test_email.to; - let client = SmtpClientBuilder::new(smtp.host, smtp.port) - .implicit_tls(smtp.tls_implicit) - .credentials((smtp.username, smtp.password)); + let client = SmtpClientBuilder::new(smtp.host, smtp.port).implicit_tls(smtp.tls_implicit); + let client = if let (Some(username), Some(password)) = (smtp.username, smtp.password) { + if !username.is_empty() { + client.credentials((username, password)) + } else { + client + } + } else { + client + }; let message = MessageBuilder::new() .from(("Windmill", smtp.from.as_str())) .to(to.clone()) diff --git a/backend/windmill-api/src/users.rs b/backend/windmill-api/src/users.rs index 0ecc5820b1..fddd9b9ebd 100644 --- a/backend/windmill-api/src/users.rs +++ b/backend/windmill-api/src/users.rs @@ -1665,9 +1665,16 @@ pub fn send_email_if_possible(subject: &str, content: &str, to: &str) { pub async fn send_email_if_possible_intern(subject: &str, content: &str, to: &str) -> Result<()> { if let Some(smtp) = SERVER_CONFIG.read().await.smtp.clone() { - let client = SmtpClientBuilder::new(smtp.host, smtp.port) - .implicit_tls(smtp.tls_implicit) - .credentials((smtp.username, smtp.password)); + let client = SmtpClientBuilder::new(smtp.host, smtp.port).implicit_tls(smtp.tls_implicit); + let client = if let (Some(username), Some(password)) = (smtp.username, smtp.password) { + if !username.is_empty() { + client.credentials((username, password)) + } else { + client + } + } else { + client + }; let message = MessageBuilder::new() .from(("Windmill", smtp.from.as_str())) .to(to) diff --git a/backend/windmill-common/src/server.rs b/backend/windmill-common/src/server.rs index 6591377f63..a6b12ca7b6 100644 --- a/backend/windmill-common/src/server.rs +++ b/backend/windmill-common/src/server.rs @@ -5,8 +5,8 @@ use crate::{error, DB}; #[derive(Serialize, Deserialize, PartialEq, Clone, Debug)] pub struct Smtp { pub host: String, - pub username: String, - pub password: String, + pub username: Option, + pub password: Option, pub port: u16, pub from: String, pub tls_implicit: bool, @@ -33,7 +33,7 @@ pub async fn load_server_config(db: &DB) -> error::Result { .flatten() .unwrap_or_default(); - let config_smtp = if let (Some(host), Some(username), Some(password)) = + let config_smtp = if let (Some(host), username, password) = (config.smtp_host, config.smtp_username, config.smtp_password) { Some(Smtp { @@ -50,7 +50,7 @@ pub async fn load_server_config(db: &DB) -> error::Result { None }; let smtp = config_smtp.or( - if let (Some(host), Some(username), Some(password)) = ( + if let (Some(host), username, password) = ( std::env::var("SMTP_HOST").ok(), std::env::var("SMTP_USERNAME").ok(), std::env::var("SMTP_PASSWORD").ok(),