Body Container
Once the head boilerplate is in place, the body wraps everything you can see: a <body> reset, an outer <div> for direction control, and a single outermost <table role="presentation"> that hosts every row of the email.
The shell
Section titled “The shell”Paste this directly under the closing </head> tag.
<body style="padding:0 !important; margin:0 !important; display:block !important; min-width:100% !important; width:100% !important; background:#ffffff; -webkit-text-size-adjust:none;">
<div style="display:block !important; min-width:100% !important; width:100% !important; background:#ffffff; -webkit-text-size-adjust:none; direction: ltr !important;">
<!-- Main --> <table role="presentation" width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#ffffff" style="border-spacing:0; border-collapse:collapse; direction: ltr;">
<!-- Header / Body / Footer rows go here -->
</table> </div></body>Switch direction: ltr to direction: rtl on both the wrapper <div> and the main <table> for right-to-left layouts. See RTL Support for the full reversal pattern.
Why every detail matters
Section titled “Why every detail matters”Padding rules you can’t skip
Section titled “Padding rules you can’t skip”Outlook adds its own padding to every <td> if you don’t explicitly zero it out. Set it inline on every cell, even ones that have no padding:
<td style="padding:0;">…</td>When you DO want padding, override it on that cell only:
<td style="padding: 24px 16px;">…</td>Spacer rows
Section titled “Spacer rows”For vertical breathing room between sections, use spacer <tr> rows with mso-line-height-rule:exactly so Outlook for Windows renders the height pixel-perfect:
<!-- 24px vertical spacer --><tr> <td style="line-height:24px; height:24px; mso-line-height-rule:exactly;"> </td></tr>For horizontal spacers (inside a row of side-by-side cells), use a spacer <td> with width + font-size:
<td style="width:16px; min-width:16px; font-size:0; line-height:0;"> </td>The is required — empty cells collapse in some clients.
What goes next
Section titled “What goes next”The main table now needs three rows: Header, Body, Footer. Each is a self-contained <tr> that nests its own table.