The real problem is using IMAP (I'm using GMail though it may occur with other mail providers)
The problem I believe is caused when a new message comes in,
and the user opens it immediately before the message has fully downloaded or read from the mail server.
This is a bug that was never in iOS6 and appeared in iOS 7.
I’m now running iOS8.1 and the bug still exists.
The problem is Apple hasn’t fixed the bug in their eMail application.
Even if you refresh/check for new messages, it has already flagged the
one with 'no content' as already downloaded, so it doesn't bother checking
again.
All the resetting and restarting as suggested by others may trigger the email app to redownload
the message, but I don't believe that always works.
It's also not an acceptable solution to restart your iOS device everytime you get
an email that 'has no content'
If you use the GMail app there is no problem.
(so I use a mix of both apps)