Answer
Send the notification email via a deferred call (background job) rather than directly inside the same event/transaction — a deferred call runs as its own independent background transaction, so it isn't rolled back when the main transaction is rolled back by the Error_SYS-triggered hard stop. Call Command_SYS.Mail() from within the deferred, background-job procedure instead of directly in the blocking event action, and the notification email survives the rollback while the hard-stop error still correctly blocks the original unauthorized action.