fix(smtp): force enabling SSL does not work (#2777)

master 4.5.1
Aaron Liu 2025-08-13 18:54:56 +08:00
parent f73583b370
commit 872b08e5da
2 changed files with 16 additions and 15 deletions

View File

@ -121,17 +121,17 @@ func (client *SMTPPool) Init() {
} }
}() }()
tlsPolicy := mail.TLSOpportunistic opts := []mail.Option{
if client.config.ForceEncryption {
tlsPolicy = mail.TLSMandatory
}
d, diaErr := mail.NewClient(client.config.Host,
mail.WithPort(client.config.Port), mail.WithPort(client.config.Port),
mail.WithTimeout(time.Duration(client.config.Keepalive+5) * time.Second), mail.WithTimeout(time.Duration(client.config.Keepalive+5) * time.Second),
mail.WithSMTPAuth(mail.SMTPAuthAutoDiscover), mail.WithTLSPortPolicy(tlsPolicy), mail.WithSMTPAuth(mail.SMTPAuthAutoDiscover), mail.WithTLSPortPolicy(mail.TLSOpportunistic),
mail.WithUsername(client.config.User), mail.WithPassword(client.config.Password), mail.WithUsername(client.config.User), mail.WithPassword(client.config.Password),
) }
if client.config.ForceEncryption {
opts = append(opts, mail.WithSSL())
}
d, diaErr := mail.NewClient(client.config.Host, opts...)
if diaErr != nil { if diaErr != nil {
client.l.Panic("Failed to create SMTP client: %s", diaErr) client.l.Panic("Failed to create SMTP client: %s", diaErr)
return return

View File

@ -139,15 +139,16 @@ func (s *TestSMTPService) Test(c *gin.Context) error {
return serializer.NewError(serializer.CodeParamErr, "Invalid SMTP port", err) return serializer.NewError(serializer.CodeParamErr, "Invalid SMTP port", err)
} }
tlsPolicy := mail.TLSOpportunistic opts := []mail.Option{
if setting.IsTrueValue(s.Settings["smtpEncryption"]) {
tlsPolicy = mail.TLSMandatory
}
d, diaErr := mail.NewClient(s.Settings["smtpHost"],
mail.WithPort(port), mail.WithPort(port),
mail.WithSMTPAuth(mail.SMTPAuthAutoDiscover), mail.WithTLSPortPolicy(tlsPolicy), mail.WithSMTPAuth(mail.SMTPAuthAutoDiscover), mail.WithTLSPortPolicy(mail.TLSOpportunistic),
mail.WithUsername(s.Settings["smtpUser"]), mail.WithPassword(s.Settings["smtpPass"]), mail.WithUsername(s.Settings["smtpUser"]), mail.WithPassword(s.Settings["smtpPass"]),
) }
if setting.IsTrueValue(s.Settings["smtpEncryption"]) {
opts = append(opts, mail.WithSSL())
}
d, diaErr := mail.NewClient(s.Settings["smtpHost"], opts...)
if diaErr != nil { if diaErr != nil {
return serializer.NewError(serializer.CodeInternalSetting, "Failed to create SMTP client: "+diaErr.Error(), diaErr) return serializer.NewError(serializer.CodeInternalSetting, "Failed to create SMTP client: "+diaErr.Error(), diaErr)
} }