Whenever I get a new trophy or a badge, I receive an email notification, but by the time I check my email, I have, pretty much always, already seen the notification on the website.
Perhaps you could delay sending the email and only really send it if the user has not already opened the corresponding badge/trophy notification on the website? The email doesn’t bother me of course, but it seems a bit wasteful.