I also don't see why it shouldn't catch any other exception that was raised and send the email report with an error message for that report rather than fail to send the entire email report.

The two places where this is currently called from are the scheduled report preview view in the django process and the reporting sending celery task.  Seems like a bare except: isn't incorrect behavior for any scenario I can think of.