diff --git a/addons/event/models/event_mail.py b/addons/event/models/event_mail.py
index 7d571723fb6513ac526b63ae97e5e1b823977669..77c9278bfd181c57124be6602cc9346523d3d3c9 100644
--- a/addons/event/models/event_mail.py
+++ b/addons/event/models/event_mail.py
@@ -248,6 +248,7 @@ You receive this email because you are:
     @api.model
     def schedule_communications(self, autocommit=False):
         schedulers = self.search([
+            ('event_id.active', '=', True),
             ('mail_done', '=', False),
             ('scheduled_date', '<=', fields.Datetime.now())
         ])
diff --git a/addons/event/tests/test_event_mail_schedule.py b/addons/event/tests/test_event_mail_schedule.py
index 87ce2b33afd5fefe6908f96167b83e2c5c49c8a8..7b1a5c10340abd10a2bfdb9983628946a3e2e64e 100644
--- a/addons/event/tests/test_event_mail_schedule.py
+++ b/addons/event/tests/test_event_mail_schedule.py
@@ -273,3 +273,67 @@ class TestMailSchedule(TestEventCommon, MockEmail):
             fields_values={'subject': '%s: today' % test_event.name,
                            'email_from': self.user_eventmanager.company_id.email_formatted,
                           })
+
+    @mute_logger('odoo.addons.base.models.ir_model', 'odoo.models')
+    def test_archived_event_mail_schedule(self):
+        """ Test mail scheduling for archived events """
+        event_cron_id = self.env.ref('event.event_mail_scheduler')
+
+        # deactivate other schedulers to avoid messing with crons
+        self.env['event.mail'].search([]).unlink()
+
+        # freeze some datetimes, and ensure more than 1D+1H before event starts
+        # to ease time-based scheduler check
+        now = datetime(2023, 7, 24, 14, 30, 15)
+        event_date_begin = datetime(2023, 7, 26, 8, 0, 0)
+        event_date_end = datetime(2023, 7, 28, 18, 0, 0)
+
+        with freeze_time(now):
+            test_event = self.env['event.event'].with_user(self.user_eventmanager).create({
+                'name': 'TestEventMail',
+                'auto_confirm': True,
+                'date_begin': event_date_begin,
+                'date_end': event_date_end,
+                'event_mail_ids': [
+                    (0, 0, {  # right at subscription
+                        'interval_unit': 'now',
+                        'interval_type': 'after_sub',
+                        'template_ref': 'mail.template,%i' % self.env['ir.model.data']._xmlid_to_res_id('event.event_subscription')}),
+                    (0, 0, {  # 3 hours before event
+                        'interval_nbr': 3,
+                        'interval_unit': 'hours',
+                        'interval_type': 'before_event',
+                        'template_ref': 'mail.template,%i' % self.env['ir.model.data']._xmlid_to_res_id('event.event_reminder')})
+                ]
+            })
+
+        # check event scheduler
+        scheduler = self.env['event.mail'].search([('event_id', '=', test_event.id)])
+        self.assertEqual(len(scheduler), 2, 'event: wrong scheduler creation')
+
+        event_prev_scheduler = self.env['event.mail'].search([('event_id', '=', test_event.id), ('interval_type', '=', 'before_event')])
+
+        with freeze_time(now), self.mock_mail_gateway():
+            self.env['event.registration'].with_user(self.user_eventuser).create({
+                'event_id': test_event.id,
+                'name': 'Reg1',
+                'email': 'reg1@example.com',
+            })
+            self.env['event.registration'].with_user(self.user_eventuser).create({
+                'event_id': test_event.id,
+                'name': 'Reg2',
+                'email': 'reg2@example.com',
+            })
+        # check emails effectively sent
+        self.assertEqual(len(self._new_mails), 2, 'event: should have 2 scheduled emails (1 / registration)')
+
+        # Archive the Event
+        test_event.action_archive()
+
+        # execute cron to run schedulers
+        now_start = event_date_begin + relativedelta(hours=-3)
+        with freeze_time(now_start), self.mock_mail_gateway():
+            event_cron_id.method_direct_trigger()
+
+        # check that scheduler is not executed
+        self.assertFalse(event_prev_scheduler.mail_done, 'event: reminder scheduler should should have run')