From f8e3b34a8a38367857567dcc5cde0724f55fc9fc Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Sat, 4 Apr 2026 20:25:59 -0300 Subject: [PATCH] fix: use builder_dangerous for port 25 (local Stalwart), starttls_relay for 465/587 --- src/email/types.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/email/types.rs b/src/email/types.rs index 6161f02c..a42fc047 100644 --- a/src/email/types.rs +++ b/src/email/types.rs @@ -353,16 +353,20 @@ impl EmailService { .body(body.to_string()) .map_err(|e| format!("Failed to build email: {}", e))?; - let mailer = if !smtp_user.is_empty() && !smtp_pass.is_empty() { + let mailer = if smtp_port == 465 { + SmtpTransport::starttls_relay(&smtp_host) + .map_err(|e| format!("SMTP relay error: {}", e))? + .port(smtp_port) + .build() + } else if !smtp_user.is_empty() && !smtp_pass.is_empty() { let creds = Credentials::new(smtp_user, smtp_pass); - SmtpTransport::relay(&smtp_host) + SmtpTransport::starttls_relay(&smtp_host) .map_err(|e| format!("SMTP relay error: {}", e))? .port(smtp_port) .credentials(creds) .build() } else { - SmtpTransport::relay(&smtp_host) - .map_err(|e| format!("SMTP relay error: {}", e))? + SmtpTransport::builder_dangerous(&smtp_host) .port(smtp_port) .build() }; @@ -439,16 +443,20 @@ impl EmailService { ) .map_err(|e| format!("Failed to build email: {}", e))?; - let mailer = if !smtp_user.is_empty() && !smtp_pass.is_empty() { + let mailer = if smtp_port == 465 { + SmtpTransport::starttls_relay(&smtp_host) + .map_err(|e| format!("SMTP relay error: {}", e))? + .port(smtp_port) + .build() + } else if !smtp_user.is_empty() && !smtp_pass.is_empty() { let creds = Credentials::new(smtp_user, smtp_pass); - SmtpTransport::relay(&smtp_host) + SmtpTransport::starttls_relay(&smtp_host) .map_err(|e| format!("SMTP relay error: {}", e))? .port(smtp_port) .credentials(creds) .build() } else { - SmtpTransport::relay(&smtp_host) - .map_err(|e| format!("SMTP relay error: {}", e))? + SmtpTransport::builder_dangerous(&smtp_host) .port(smtp_port) .build() };