With previous versions you could force the report to fail with a Division by Zero error. Unfortunately, this doesn't seem to work any more (I couldn't get it to work in 8.5 - it causes the report to fail whether there are records or not).
Instead of emailing a blank report, place a conditionally suppressed text message in the report. The message could state something like 'No records generated on <CurrentDate> where Selection Critieria = <insert here>' when the Count({table.field}) = 0. The report will still be emailed, but it could have an intelligent, customized message.
Most times when an end user gets a blank report, they assume its broken. By providing them with the information, they can be assured that the report worked correctly, it just didn't return any data.
For my current project, I require my team to insert a customized 'No Records' in every report. Since we have to archive all report output anyway, this solution works well.