when doing a try-catch, always be sure to look at the error being caught. sometimes it's not the one you expected. In other words, rather than catching an error thrown by code above the email.send, it could be an error thrown by email.send itself. The best way to debug that is to temporarily remove the try block. If the code throws an error, then you will know.