A me non sembra un problema di script, ma di ouput da parte del server di posta.

Il primo non filtra il contenuto HTML perché (magari analizzandolo) lo ritiene non dannoso.
Il secondo blocca tutto (CSS compreso) e formatta alla bell'e meglio con caratteri standard (times new roman).
Il terzo blocca solo le immagini e lascia inalterato il layout.

Manco a dirlo, essendo le immagini dei pericolosissimi veicoli di codice malevolo, ogni fornitore di indirizzi di posta elettronica si organizza come meglio crede per tentare di salvaguardare i propri utenti da infezioni varie.

Mi sa proprio che non riuscirari a risolvere con una qualche riga di PHP.
Ad ogni modo, sono sicuro che chi si scarica la posta con un Client, possa visualizzare il messaggio esattamente come tu lo intendi formattato.