Emails to iCloud from my server show 'This message has no content'
It turns out the issue has to do with the content headers and how the email clients are interpreting them.

Originally, the HEADER was set to Content-Type: multipart/related; and the body was structured as

multipart/alternative
    text/plain
    text/html


It seems the iOS and apple clients weren't able to parse multipart/related correctly.

I solved it by changing the header to Content-Type: multipart/alternative; and then structured the body as

    text/plain
    text/html


Here is the mail library I was using https://github.com/opencart/opencart/blob/1.5.5.1/upload/system/library/mail.php

Similar discussion here https://stackoverflow.com/questions/19497672/multipart-messages-including-multiple-attachments-attachment-and-inline-wi

And here https://stackoverflow.com/questions/7766943/mime-multipart-related-structure-and-apple-mail-is-it-a-bug