There is an add-on for Google Docs to send an HTML email version of a document - open "Add-ons > Get Add-ons" and search for "email html".
For a coder's approach, Omar AL Zabir (user @oazabir) has written a good blog entry that walks through it: Google Docs to Clean HTML. Rather than relying on fetching the document as HTML, you traverse the document object to collect each element and build the HTML output.
Ensuring that the email looks just as the source document in all email clients is a big topic - too much for this forum. However, here are some points to keep in mind:
- Many clients (e.g. GMail) require in-line styling, rather than separate css
style
blocks. (That's why you're seeing no formatting in GMail.) See How do I use Google Apps Script to change a CSS page to one with inline styles? - Image wrapping info is attached to the image elements in the Google Doc, but (last time I checked) not available to scripts.