You've seen those whisper spambots who tell you that your account needs to be verified. You right click their avatars and then block them or report them and move on.
However, this does not work ingame. Pulling up the chat tab while in game and right clicking the offender's avatar does not pull up the right-click menu. The only way to stop the spam onslaught is to shut out all messages from outside the game:
1. Set yourself to busy. You still receive messages, but they are not shown ingame. This also has the side effect of turning off achievement notifications, which can be an issue if you're gunning for a specific avatar (like my Rory Swann Coop avatar).
2. Go to Options -> Social and check Only allow friends to send me messages. This shuts out everyone who isn't on your friends list.
I must say that this is unacceptable. I don't want to do either of these because I see gaming as a social experience, and want to be able to communicate with other players by default. I don't like #1 because I don't want to turn off achievement notifications, and I actually want to see Battle.net chat while playing.
I absolutely will not use #2 because it is a very shitty antisocial solution to this problem. Most people online, believe it or not, are not assholes. Shutting out everyone by default is horrible. Most people will not bother adding a random stranger to his friends list just to tell him, "gg wp" in a whisper.
In fact, most of my whispers have been from nice people ("Hey Dalek, that was a close game, WP, I didn't think I'd win."). It's just the random asshole (especially tryhard assholes) that ruins it.
This needs to be changed. Just allow us to block people while we're playing a game and they're not in our current game. Having to block everyone else, even temporarily, just to get rid of spam is horrible for the game's community.