In Salseforce governor limits, it states that every org is allowed to send single emails to 1000 external addresses every 24 hours. On very rare occasions, an org I work with has exceeded this limit through Apex emails on a particular busy day. Exceeding the limit prevents them from sending emails until more became available.
I appreciate that Salesforce is not a mass emailing program. However on the rare occasions when the limit is exceeded in this way, I would like there to be a way to capture exceeding this limit and redirect the emails back to the current user with an internal note instructing them to direct the messages manually (there is no limit on internal email).
Salesforce themselves suggest using the Messaging.reserveSingleEmailCapacity(count) method to determine to see if the org has the capacity to send the emails. However, this method is next to useless for this because if the emails are not available, an uncatchable system.limit exception is fired. So instead of allowing the email process to run which would cause an un-catchable exception, we can simply have this happen earlier, doesn't really help!
Does anyone have an idea about how to capture this limit break? I have heard one potential solution that involves a scheduled job updating a global setting with the latest time the job successfully ran, then using another job to read this value and react accordingly. I could do this, but given the rare occurrence of the limit exception, I would prefer not to use regular scheduled jobs in this manner.