Overview
The toPlainText() function converts HTML email markup into plain text format. It automatically strips HTML tags and formatting while preserving the textual content, making it ideal for creating plain text versions of your emails.
Import
import { toPlainText } from 'better-svelte-email/render';
Signature
function toPlainText(markup: string): string
Parameters
The HTML string to convert to plain text
Returns
Plain text representation of the HTML markup
Behavior
The function:
- Removes all HTML tags and attributes
- Preserves text content and structure
- Skips image elements (
<img> tags)
- Skips preview text elements (elements with id
#__better-svelte-email-preview)
Usage Example
Basic Usage
import Renderer from 'better-svelte-email/renderer';
import { toPlainText } from 'better-svelte-email/render';
import WelcomeEmail from '$lib/emails/welcome.svelte';
const renderer = new Renderer();
const html = await renderer.render(WelcomeEmail, {
props: { name: 'John Doe' }
});
const plainText = toPlainText(html);
console.log(plainText);
// Output: Plain text version of the email
Sending Both HTML and Plain Text
import Renderer from 'better-svelte-email/renderer';
import { toPlainText } from 'better-svelte-email/render';
import { sendEmail } from './email-service';
import OrderConfirmation from '$lib/emails/order-confirmation.svelte';
const renderer = new Renderer();
const html = await renderer.render(OrderConfirmation, {
props: {
orderNumber: '12345',
items: [...]
}
});
const text = toPlainText(html);
await sendEmail({
to: '[email protected]',
subject: 'Order Confirmation',
html,
text // Plain text fallback
});
Migration Note
The deprecated renderAsPlainText() function from better-svelte-email/utils should be replaced with toPlainText() from better-svelte-email/render.
// Old (deprecated)
import { renderAsPlainText } from 'better-svelte-email/utils';
const text = renderAsPlainText(html);
// New (recommended)
import { toPlainText } from 'better-svelte-email/render';
const text = toPlainText(html);