How can I contact another user, if that user has not specified any contact details in their profile?
Instant messaging or private messaging is not available: requests to implement that have been declined to keep focus on questions and answers, and to keep those visible to everyone.
Some users are active in chat, and you might be able to set up a "one-on-one" chat room for you and the user you'd like to contact by visiting their user profile on chat and clicking the "start a new room with this user" button. (Note that the room will not be private -- if you have enough reputation, you can make it so that others cannot post messages in the room, but others will still be able to read the messages):
Then, if you have at least 1,000 reputation, change the room parameters to Gallery mode. If the user has never logged on to Stack Exchange Chat but has a Stack Overflow profile, you might also try on Stack Overflow Chat.
In rare cases where immediate action is necessary (e.g., the user has accidentally left login credentials in a post), you can flag for moderator attention and explain what the urgent matter is about.
On the flip side, if you want to provide a way for people to contact you, leave contact information in your user profile.
You can still see the "About Me" section of users' profiles. Often, users place links to Twitter, Github, and their personal website. By checking out these links, you can often see email addresses. Also, many users place their emails and Linked In profile links in their publicly available "About Me" section, especially if they are interested in networking.
I once found a way to contact another user in private.
The procedure is simple. We exchanged out twitter accounts in a chat session and followed each other. Then using Twitter's private chat function, we managed to exchange more contact methods.
It's really safe since if someone else followed your Twitter you can simply ignore him and send your message to the one you want to contact.
Exactly because one user may have forgot to fill out contacts details or he/she may have typed a wrong or expired link:
rather I'd suggest to at least place a button in every users profiles: "Request contacts details". Clickable just once.
Let me kindly explain and for my example, we said first that e.g. my stack* user name will be Robert_SE and I'm trying to contact user JhonDoe.
I goto JhonDoe profile but unfortunately he did not filled the possible contacts and or they are wrong/expired.
I'll click the "Send contacts request" button available in his profile page and he will receive this kind email message on the email associated with his/her Stack* account:
"The user Robert_SE (with direct link to my profile) wants to contact you. If they are left blank, Why don't take this occasion to fill your social channels details and or contact details? (with link for the action) If you kindly want to get back to user Robert_SE, click his profile link and you'll find his/her contacts details. Please note that user Robert_SE can't repeat this request anymore. Regards Stack* Community"
It will be matter of Mr. John to decide what's next or the request will vanish in a soap bubble:
for the simple fact that, after clicking it once, for me user Robert_SE, the button "Send contacts request" will be grayed disabled.
Needless to say that I'll be smart enough to have double verified that at least one contact channel in my profile is properly filled out ... :-)
EDIT from comments, it is needless to say, in my idea, the button will we shown ONLY to logged users.
If you allow me, this could turn in a cool solution for this long term question.