Parcourir la source

fix: 多地区outlook邮箱和ofb邮箱Auth

OswinWu il y a 1 an
Parent
commit
484a8595e4
2 fichiers modifiés avec 9 ajouts et 1 suppressions
  1. 8 0
      common/email-outlook-auth.go
  2. 1 1
      common/email.go

+ 8 - 0
common/email-outlook-auth.go

@@ -3,6 +3,7 @@ package common
 import (
 	"errors"
 	"net/smtp"
+	"strings"
 )
 
 type outlookAuth struct {
@@ -30,3 +31,10 @@ func (a *outlookAuth) Next(fromServer []byte, more bool) ([]byte, error) {
 	}
 	return nil, nil
 }
+
+func isOutlookServer(server string) bool {
+	// 兼容多地区的outlook邮箱和ofb邮箱
+	// 其实应该加一个Option来区分是否用LOGIN的方式登录
+	// 先临时兼容一下
+	return strings.Contains(server, "outlook") || strings.Contains(server, "onmicrosoft")
+}

+ 1 - 1
common/email.go

@@ -68,7 +68,7 @@ func SendEmail(subject string, receiver string, content string) error {
 		if err != nil {
 			return err
 		}
-	} else if strings.HasSuffix(SMTPAccount, "outlook.com") {
+	} else if isOutlookServer(SMTPAccount) {
 		auth = LoginAuth(SMTPAccount, SMTPToken)
 		err = smtp.SendMail(addr, auth, SMTPAccount, to, mail)
 	} else {