This question already has an answer here:
I have an idea! How about we make a fair-and-square vote about whether we should have a private messaging system or not?
You can make a public announcement in the side bar of all the Stack Exchange websites and make a simple poll where people can vote (anyone, without any reputation restrictions).
CURRENT RESULTS ON POLL:
64% (32) Yes
36% (18) No
Edit: Please use the poll here instead so anyone can vote, even without 125 reputation: http://www.misterpoll.com/polls/577005
EDIT: I don't have time anymore to do this. I have too much work.
See here: Any way to send a personal message to another user? there are quite some answers that are for PMs.
For spam prevention, it could be possible to block a person from sending messages to you.
There should be a private messaging system if someone wants to give a work offer to someone privately, or if you just want to ask them a very specific question only they know the answer to, or if your post is closed and you want to explain why you think the post should be opened, or if you revised the post and want to notify the moderators.
Also, private messaging allows you to contact people without both sides knowing each other's email. So, that means more people would agree to allow people to contact them.
Every user on the StackExchange sites has the right to include contact info on their profile page. If they don't, then they probably do not want to be contacted by email or through a private message.
NOT TRUE! Some people don't put their emails in their profile so that there wouldn't be a hundred accounts created using it by some troll! This already happened to me a couple of times.
Also, I agree that the mods would receive a million PMs hourly, but we can limit Private Messaging to people with high reputation. That would keep spammers out, because you would need to work to get Private Messaging enabled.