Skip to main content

EmailViewer

A React component for rendering email (.eml) files. Parses email content using postal-mime and displays headers and body with security sandboxing.

Import​

import {
BaseEmailViewer,
EmailViewer,
} from "@osdk/react-components/experimental/email-viewer";
  • EmailViewer — Primary component for OSDK usage. Accepts an OSDK Media object, parses the .eml contents, and renders the email.
  • BaseEmailViewer — Lower-level component that accepts a pre-parsed ParsedEmail object.

Usage​

With OSDK Media​

import { EmailViewer } from "@osdk/react-components/experimental/email-viewer";

<EmailViewer media={ticket.emailAttachment} />;

With parsed email data​

import { BaseEmailViewer } from "@osdk/react-components/experimental/email-viewer";

<BaseEmailViewer
email={{
subject: "Hello",
from: { name: "Alice", address: "alice@example.com" },
to: [{ name: "Bob", address: "bob@example.com" }],
cc: [],
date: "2026-01-15T10:30:00Z",
html: "<p>Hello Bob!</p>",
text: "Hello Bob!",
}}
/>;

Props​

BaseEmailViewerProps​

PropTypeRequiredDescription
emailParsedEmailYesParsed email data
classNamestringNoCSS class applied to the root element

EmailViewerMediaProps​

PropTypeRequiredDescription
mediaMediaYesThe OSDK Media object to fetch EML from
classNamestringNoCSS class applied to the root element

ParsedEmail​

FieldTypeDescription
subjectstring | undefinedEmail subject line
fromEmailAddress | undefinedSender address
toreadonly EmailAddress[]Recipient addresses
ccreadonly EmailAddress[]CC addresses
datestring | undefinedDate string
htmlstring | undefinedHTML body
textstring | undefinedPlain text body

Security​

HTML email bodies are rendered inside a sandboxed <iframe> with sandbox="allow-same-origin". This prevents script execution, form submissions, and popups from the email content.

Theming​

:root {
--osdk-email-viewer-bg: var(--osdk-background-primary);
--osdk-email-viewer-border: var(--osdk-surface-border);
--osdk-email-viewer-header-bg: var(--osdk-background-secondary);
--osdk-email-viewer-header-border: var(--osdk-surface-border);
}