From 45c836badcc03611963d003a0544b86f44a0950d Mon Sep 17 00:00:00 2001 From: zeripath Date: Sat, 19 Mar 2022 18:33:32 +0000 Subject: [PATCH] Do not send notification emails to inactive users (#19131) (#19139) Backport #19131 Backport #19142 Emails should not be sent to inactive users except for Activate and ResetPassword messages. Fix #18950 Signed-off-by: Andrew Thornton --- routers/private/mail.go | 2 +- services/mailer/mail.go | 12 ++++++++---- services/mailer/mail_issue.go | 4 ++++ services/mailer/mail_repo.go | 4 ++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/routers/private/mail.go b/routers/private/mail.go index 8b69c38093..853b58b09d 100644 --- a/routers/private/mail.go +++ b/routers/private/mail.go @@ -60,7 +60,7 @@ func SendEmail(ctx *context.PrivateContext) { } } else { err := user_model.IterateUser(func(user *user_model.User) error { - if len(user.Email) > 0 { + if len(user.Email) > 0 && user.IsActive { emails = append(emails, user.Email) } return nil diff --git a/services/mailer/mail.go b/services/mailer/mail.go index 3d93f1bd69..e0a454d498 100644 --- a/services/mailer/mail.go +++ b/services/mailer/mail.go @@ -146,8 +146,8 @@ func SendActivateEmailMail(u *user_model.User, email *user_model.EmailAddress) { // SendRegisterNotifyMail triggers a notify e-mail by admin created a account. func SendRegisterNotifyMail(u *user_model.User) { - if setting.MailService == nil { - // No mail service configured + if setting.MailService == nil || !u.IsActive { + // No mail service configured OR user is inactive return } locale := translation.NewLocale(u.Language) @@ -176,8 +176,8 @@ func SendRegisterNotifyMail(u *user_model.User) { // SendCollaboratorMail sends mail notification to new collaborator. func SendCollaboratorMail(u, doer *user_model.User, repo *repo_model.Repository) { - if setting.MailService == nil { - // No mail service configured + if setting.MailService == nil || !u.IsActive { + // No mail service configured OR the user is inactive return } locale := translation.NewLocale(u.Language) @@ -404,6 +404,10 @@ func SendIssueAssignedMail(issue *models.Issue, doer *user_model.User, content s langMap := make(map[string][]*user_model.User) for _, user := range recipients { + if !user.IsActive { + // don't send emails to inactive users + continue + } langMap[user.Language] = append(langMap[user.Language], user) } diff --git a/services/mailer/mail_issue.go b/services/mailer/mail_issue.go index c9cc2e015a..c37414df05 100644 --- a/services/mailer/mail_issue.go +++ b/services/mailer/mail_issue.go @@ -125,6 +125,10 @@ func mailIssueCommentBatch(ctx *mailCommentContext, users []*user_model.User, vi langMap := make(map[string][]*user_model.User) for _, user := range users { + if !user.IsActive { + // Exclude deactivated users + continue + } // At this point we exclude: // user that don't have all mails enabled or users only get mail on mention and this is one ... if !(user.EmailNotificationsPreference == user_model.EmailNotificationsEnabled || diff --git a/services/mailer/mail_repo.go b/services/mailer/mail_repo.go index a5343f8128..24e6d671f4 100644 --- a/services/mailer/mail_repo.go +++ b/services/mailer/mail_repo.go @@ -31,6 +31,10 @@ func SendRepoTransferNotifyMail(doer, newOwner *user_model.User, repo *repo_mode langMap := make(map[string][]string) for _, user := range users { + if !user.IsActive { + // don't send emails to inactive users + continue + } langMap[user.Language] = append(langMap[user.Language], user.Email) }