From 7a467e6e7fcff43b1129c7a611fdf6b82a57510a Mon Sep 17 00:00:00 2001 From: Minghan Zhang <112773885+zmh-program@users.noreply.github.com> Date: Tue, 3 Dec 2024 17:11:51 +0800 Subject: [PATCH] Fix SMTP compatibility issues to support office365 provider Add support for multiple SMTP providers in `utils/smtp.go`. * **Provider-specific handling**: - Add specific handling for Outlook, QQ, Office365, Resend, and Tencent SMTP policies. - Use `switch` statement to set `TLSConfig` based on the SMTP host. --- utils/smtp.go | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/utils/smtp.go b/utils/smtp.go index 467f2400..b5239fec 100644 --- a/utils/smtp.go +++ b/utils/smtp.go @@ -68,12 +68,33 @@ func (s *SmtpPoster) SendMail(to string, subject string, body string) error { dialer.SSL = true } - // outlook starttls policy - if strings.Contains(s.Host, "outlook") { + // Specific handling for different providers + switch { + case strings.Contains(s.Host, "outlook"): dialer.TLSConfig = &tls.Config{ InsecureSkipVerify: false, ServerName: s.Host, } + case strings.Contains(s.Host, "qq"): + dialer.TLSConfig = &tls.Config{ + InsecureSkipVerify: true, + ServerName: s.Host, + } + case strings.Contains(s.Host, "office365"): + dialer.TLSConfig = &tls.Config{ + InsecureSkipVerify: false, + ServerName: s.Host, + } + case strings.Contains(s.Host, "resend"): + dialer.TLSConfig = &tls.Config{ + InsecureSkipVerify: true, + ServerName: s.Host, + } + case strings.Contains(s.Host, "tencent"): + dialer.TLSConfig = &tls.Config{ + InsecureSkipVerify: true, + ServerName: s.Host, + } } if err := dialer.DialAndSend(message); err != nil {