# Emailing an HTML Report — Why It Breaks, and What to Send Instead

Canonical: https://commareports.com/email-html-report
Published: 2026-08-25

> HTML attachments get quarantined, pasted report markup gets mangled by Outlook, and 30 MB never arrives. Send a link that renders faithfully and collects comments instead.

# Emailing an HTML report

The report is done, and the obvious move is to attach it. Three things
tend to go wrong, in this order.

## 1. The attachment doesn't arrive

HTML attachments are one of the standard shapes of a phishing payload —
a local page that renders a convincing sign-in form. Corporate mail
filtering treats them accordingly: stripped, quarantined, or delivered
behind a warning banner that trains the recipient not to click.

You find out about this hours later, from someone who assumed you never
sent it.

## 2. It arrives, and it doesn't open

The rest of the failure modes from
[opening a local HTML file](/open-html-file-online) all apply: the
`report_files/` folder didn't come with it, `fetch` is blocked on the
`file://` origin, and on a phone the mail client won't hand the file to a
browser at all.

## 3. So you paste the report into the body instead

This is worse in a more interesting way. Email clients are a decade or
more behind browsers:

- **Outlook on Windows** renders with the Word HTML engine. Flexbox and
  grid don't exist there; the layout collapses into stacked blocks.
- **`<script>` is stripped everywhere.** Every interactive chart becomes
  an empty div.
- **External and `<head>` stylesheets** are commonly removed; only
  inline styles reliably survive.
- **Dark mode** in Apple Mail and Outlook recolors things you didn't ask
  it to recolor.

What the recipient sees is not what you rendered.

## Send the link

Publish the report once and email its URL:

```bash
curl -X POST https://commareports.com/api/v1/reports \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html report.html \
        '{title: "Q3 pipeline review", html: $html, visibility: "registered"}')"
```

Or drag the file — or the whole output folder — into
[the app](https://commareports.com/) and copy the link.

What changes:

- **It renders the same for everyone.** A browser opens it, not a mail
  client, so the charts, the CSS and the interactivity are the ones you
  built.
- **Size stops mattering.** Entry HTML up to 5 MB, assets up to 25 MB
  each and 250 MB per report — a 40 MB EDA report that can't be mailed
  at all publishes fine.
- **It opens on a phone**, because it's a URL.
- **You can revoke it.** An attachment is a copy you no longer control.
- **Replies land on the report**, not in a thread of forwarded
  screenshots — [anchored comments](/comment-on-html) sit on the number
  someone is questioning.

## Choosing who gets in

`visibility` is set at create time and changeable afterwards:

- `private` — you (and the report's team), nobody else.
- `registered` — anyone signed in to Comma, which is the right default
  for an internal report emailed to a distribution list.
- `public` — anyone with the link, for the external case.

Named reviewers and domain gating are in
[sharing & access control](/docs/sharing).

## When the report is recurring

If you're emailing the same report every week, publish it once and
[refresh it on a schedule](/docs/routines) instead. The link stays
stable, each run appends a revision, and the weekly email becomes one
sentence and a URL that's already current.

## Try it

Comma is free — unlimited reports, unlimited commenters, unlimited
revision history.

**[Publish a report and send the link →](https://commareports.com/)**

### Related

- [Someone sent me an HTML file](/open-html-file-online)
- [Share an HTML report with your team](/share-html-report)
- [Scheduled report delivery](/features/routines/scheduled-html-reports) · [Sharing model](/docs/sharing)
