Depending on where the message has come from, what appears to be the body may actually be an attachment, and possibly even base64 encoded. Some people do that to ensure that any special characters are sent without being corrupted. And though it's good practice to include an alternative encoding, it's not mandatory.
Messages where the Content-Type header is set to "multipart/alternative" will often appear to have no body, and the client is supposed to pick whichever of the content sections it is best able to display - typically that would be text/plain or text/html
However, as I mention, don't assume that the text/plain part will necessarily be human readable. Looking at a mailing list message I have in my inbox, both the html and text/plain parts have Content-Transfer-Encoding: base64 headers, designed to ensure nothing will be destroyed by any weird gateways.
You can try and tell people to only send in plain text, but many years experience of running mailing lists suggests to me you'll be fighting a losing battle.
An old saying when it comes to internet standards is "Be liberal in what you accept, and strict in what you send out" and it particularly applies to email. There's an astonishing number of really shit email clients out there that will generate all manner of junk for you to try and handle.