The first thing most people do when they need the HTML source of an Outlook email is right-click the message body and hunt for 'View Source' or 'Inspect Element'. That menu doesn’t exist. Not in Outlook 365, not in Outlook 2019, not even in Outlook 2016. And yet, dozens of outdated blog posts still tell you to look for it — sending people down rabbit holes involving Notepad++, registry edits, and third-party tools that break after a Microsoft update.
The Myth
Most people believe Outlook stores emails in raw HTML files you can just open or export directly — or worse, that hitting Ctrl+U (like in Chrome) will reveal the source. It won’t. Outlook renders messages using its own rendering engine (based on Word’s HTML parser), not a web browser. So even if you save an email as .htm, the output is often mangled: inline styles stripped, embedded images missing, CSS classes rewritten, and tables bloated with unnecessary <span> wrappers.
The Reality
The only reliable way to get *usable*, *editable*, *web-compatible* HTML from an Outlook email is to use the built-in 'Save As Web Page' feature — but only after applying one critical pre-step: switching the message to Plain Text mode first. Yes — plain text. Counterintuitive? Absolutely. But here’s why it works: when Outlook saves a plain-text message as HTML, it wraps the content in minimal, predictable markup — no Word-specific garbage, no auto-generated font-family: Calibri overrides, no nested <div class="MsoNormal"> junk.
What most people don’t realize is that Outlook’s ‘Edit Message’ mode (Alt+H > E) temporarily bypasses Word’s renderer and gives you direct access to the underlying HTML structure — but only if the message was originally sent as HTML *and* you’re using Outlook Desktop (not Web or mobile).
Why the Myth Persists
This confusion dates back to Outlook 2003, when Microsoft shipped a now-removed developer tool called 'Outlook Spy' that *did* expose raw HTML via MAPI properties. Tutorials from that era still rank highly on Google. Then came Outlook 2010’s switch to the Word rendering engine — which intentionally hid the source layer behind abstraction. Later, Outlook Web App (now Outlook on the web) dropped MAPI access entirely. Mobile Outlook (iOS/Android) never supported HTML export at all — it only offers 'Forward as Attachment', which sends a .msg file, not HTML.
Also, many users confuse 'View Source' in Outlook on the web (which shows the DOM of the *interface*, not the email) with actual message source. You’ll see <div id="message-body">, but that’s just the container — not the sender’s original HTML.
The Right Way
Here’s how to get clean, production-ready HTML from any desktop Outlook email — tested on Outlook 365 (v2405), Outlook 2021, and Outlook 2019:
Open the email in Reading Pane (don’t double-click to open in separate window yet).
Press Alt+H, then E — this opens the message in Edit Message mode. You’ll see the ribbon change to ‘Message’ tab.
Go to File > Options > Mail > Compose messages, and uncheck ‘Use Microsoft Word to edit email messages’. Click OK. (Yes — you’re disabling Word integration *temporarily*.)
Close and re-open the message. Now press Ctrl+A, then Ctrl+C.
Paste into a plain-text editor like Notepad. You’ll see raw HTML — but it’s still messy.
The key step: Go back to the message, click Message tab > Format Text > Plain Text (or press Ctrl+Shift+6). Then repeat steps 4–5.
Paste into VS Code or Sublime Text. Run a quick find-and-replace: replace with , and remove empty <p><br></p> lines.
For bulk extraction: Save the message as File > Save As > choose Web Page, Filtered (*.htm; *.html). This removes Word-specific markup — unlike 'Web Page, Complete', which bundles images as folders and breaks paths.
Proof It Works
Here’s what you get with the wrong method vs. the right one — using an email from Priya Sharma (Marketing, Alibaba Cloud):
Method
HTML Output Size
Embedded Images?
CSS Inline or External?
Web-Compatible?
Right-click > 'Save As' > .htm (default)
217 KB
No — references local C:\ path
External .css file (Word-generated)
❌ Fails in Gmail, Outlook.com
'Save As' > 'Web Page, Filtered'
42 KB
No — but uses cid: refs (fixable)
Inline only
✅ Renders in all clients
Copy-paste from Plain Text mode
18 KB
No — but clean structure for manual img insertion
None — pure semantic tags
✅ Ideal for dev handoff
Forward as .msg + Outlook Spy (legacy)
N/A — requires admin rights & old tool
Yes — full MIME source
All original headers & multipart
✅ But unusable without parsing
Outlook on the web → Inspect Element
~5 KB (UI shell only)
No
Framework CSS only
❌ Not the email’s HTML
Exceptions
There are exactly three cases where the 'View Source' myth *does* hold water — but only narrowly:
Outlook Add-ins: If you’ve installed 'Emailchemy' or 'HTML Inspector for Outlook', they inject a ribbon button labeled 'View HTML Source'. These work — but require admin install and break after major updates.
Developer Mode in Outlook 365: Enable 'Developer' tab (File > Options > Customize Ribbon > check 'Developer'), then use 'Inspect Element' — but this inspects the Outlook UI, not message content.
Exchange Web Services (EWS) access: If you're a sysadmin with EWS credentials, you can fetch raw MIME via PowerShell: Get-MessageTraceDetail -MessageId "<abc@alibaba.com>" | Select-Object -ExpandProperty Body. This returns base64-encoded HTML — but it's not something end users can run.
Mobile Outlook (iOS/Android) has no workaround. You cannot extract HTML on-device. Your only option is forwarding the email to a desktop client, or using Outlook on the web to copy-paste the visible text — then reconstructing HTML manually.
Troubleshooting Table
Symptom
Cause
Fix
Prevention
Pasted HTML shows 'Â' characters
UTF-8 encoding lost during copy
Paste into Notepad++ → Encoding > Convert to UTF-8
Always paste into UTF-8-aware editor first
Images appear as broken links
Outlook uses cid: references, not URLs
Replace src="cid:xyz" with actual base64 or hosted URL
Use 'Web Page, Filtered' + extract images separately
Email renders fine in Outlook but breaks in Gmail
Outlook uses Word’s proprietary CSS (e.g., mso- prefixes)
Strip all mso- attributes with regex: \s*mso-[^;]*;?
Avoid 'Web Page, Complete'; prefer 'Filtered' or plain-text paste
No 'Plain Text' option in Format Text tab
Message is encrypted (S/MIME) or digitally signed
Forward to yourself unencrypted, or ask sender to resend
Disable S/MIME for internal HTML-sharing workflows
Ctrl+Shift+6 does nothing
Keyboard shortcut disabled by group policy or add-in
Use ribbon: Message > Format Text > Plain Text
Test shortcuts in safe mode (Outlook.exe /safe)
Lisa Anderson
Lisa is a certified Microsoft trainer who writes step-by-step guides for Power Automate