Since you have so many test cases, are you expecting mail for each and every failed scenario individually or all failed scenarios as a whole (one time email) at the end of the test run?
If you want to send mail for all failed scenarios individually then follow below steps.
- Under TestCleanup check the UnitTestOutcome.Failed is true or not.
- If it is true it means that a particular test method failed.
- Based on this under this condition you can send a mail from here.
If you need a single mail then store all failed information in any format you want and in AssemblyCleanup you can keep the mail code so that it executes at the end of all the test.
Note having screenshots and Exception inside the mail is related to how you are handling reports in your projects. This is just an idea for you questions.