diff --git a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js index 2eea270ecb61..78b4c419e4b6 100644 --- a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js +++ b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js @@ -43,6 +43,9 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) { if (room.t === 'd') { usersToSendEmail[message.rid.replace(message.u._id, '')] = 'direct'; } else { + const isMentionAll = message.mentions.find((mention) => { + return mention._id === 'all'; + }); RocketChat.models.Subscriptions.findWithSendEmailByRoomId(room._id).forEach((sub) => { if (sub.disableNotifications) { return delete usersToSendEmail[sub.u._id]; @@ -55,7 +58,11 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) { return mention._id === sub.u._id; }); - if (emailNotifications === 'mentions' || mentionedUser) { + if (emailNotifications === 'mentions' && (mentionedUser || isMentionAll)) { + const maxMembersForNotification = RocketChat.settings.get('Notifications_Max_Room_Members'); + if (isMentionAll && maxMembersForNotification !== 0 && room.usernames.length > maxMembersForNotification) { + return; + } return usersToSendEmail[sub.u._id] = 'mention'; }