I would set an email sent flag after each alarm email is sent, you do get an error log if the email does not send.
Nothing wrong with your flow mate.
So, once your alarm is triggered - Set alarm triggered flag for that specific alarm —> Send email for that alarm ----> set email sent flag for that specific alarm. So when your loop starts again and the alarm is still active —> you check to see if that alarm flag is still set (alarm still active) if it is, check if the email flag is still set/active ----> bypass email sending script. keeping checking alarm triggered flag until alarm is off, then reset your email sent flag.
Hope that makes sense.
My example below has a SMS routine included and is for ONE alarm only. Flags are your friend