🐛 修复邮件问题

This commit is contained in:
sugarBecomer
2026-03-27 16:12:35 +08:00
parent ef61d405ba
commit 0934994f51
2 changed files with 45 additions and 0 deletions
+37
View File
@@ -120,6 +120,43 @@ func NormalizeConfig(cfg EmailConfig) EmailConfig {
return cfg
}
func (s *EmailServiceV1) SaveAuthorizedOutlookConfig(ctx context.Context, cfg EmailConfig) error {
cfg = NormalizeConfig(cfg)
configs := map[string]string{
cst2.ConfigEmailAuthMode: AuthModeOutlookOAuth2,
cst2.ConfigEmailFromEmail: cfg.FromEmail,
cst2.ConfigEmailOAuthTenant: cfg.OAuthTenant,
cst2.ConfigEmailOAuthClientID: cfg.OAuthClientID,
cst2.ConfigEmailOAuthClientSecret: cfg.OAuthClientSecret,
cst2.ConfigEmailOAuthRedirectURL: cfg.OAuthRedirectURL,
cst2.ConfigEmailOAuthRefreshToken: cfg.OAuthRefreshToken,
cst2.ConfigEmailOAuthScope: cfg.OAuthScope,
}
for key, value := range configs {
exists, err := db.Global.SysConfig.Query().Where(sysconfig.KeyEQ(key)).Exist(ctx)
if err != nil {
return err
}
if exists {
if _, err = db.Global.SysConfig.Update().Where(sysconfig.KeyEQ(key)).SetValue(value).Save(ctx); err != nil {
return err
}
continue
}
if _, err = db.Global.SysConfig.Create().
SetKey(key).
SetValue(value).
SetDescription("邮件配置").
Save(ctx); err != nil {
return err
}
}
return nil
}
func (s *EmailServiceV1) ValidateConfig(cfg EmailConfig) error {
cfg = NormalizeConfig(cfg)
+8
View File
@@ -106,6 +106,14 @@ func (s *EmailServiceV1) ExchangeOutlookAuthorizeCode(ctx context.Context, state
if token.RefreshToken == "" {
return "", session.FrontendOrigin, fmt.Errorf("no refresh token returned, please ensure offline_access scope is granted")
}
session.Config.AuthMode = AuthModeOutlookOAuth2
session.Config.OAuthRedirectURL = session.CallbackURL
session.Config.OAuthRefreshToken = token.RefreshToken
if err = s.SaveAuthorizedOutlookConfig(ctx, session.Config); err != nil {
return "", session.FrontendOrigin, err
}
return token.RefreshToken, session.FrontendOrigin, nil
}