Usage
MailingUI is a set of opinionated React components, built on top of React.email (opens in a new tab), designed to make the creation of emails easier. Before you continue, make sure to read Getting Started - Introduction.
MailingUI uses React.email (opens in a new tab) render
utility function to parse React into HTML that is optimized for various email clients. Once the HTML markup is rendered, you have the flexibility to employ any preferred email sending service or library to effectively deliver your emails.
Let's explore how to use MailingUI components to create emails and send them using Resend (opens in a new tab). For alternative providers, please refer to React.email Integrations (opens in a new tab).
Install dependencies
npm install resend
Create email template
Use any of your MailingUI components along with any other React.email Components (opens in a new tab) to create your email template just like any other React component. Here's an example:
import * as React from "react";
import {
Html,
Head,
Body,
Container,
Row,
Column,
} from "@react-email/components";
import Demo from "./Demo.mdx";
import { Typography } from "@mailingui/components";
export default function Email({ greeting }: { greeting: string }) {
return (
<Html>
<Head />
<Body style={body}>
<Container style={container}>
<Row style={row}>
<Column>
<Typography.P>{greeting}</Typography.P>
</Column>
</Row>
</Container>
</Body>
</Html>
);
}
export const body: React.CSSProperties = {
backgroundColor: "#fafafa", // Background color outside container
margin: 0, // Margin reset
};
export const container: React.CSSProperties = {
backgroundColor: "#fff", // Email background color
padding: "60px 30px", // We remove inline padding to enable full-width banners
maxWidth: "600px", // Estalbish the maximum size of the email
};
Send email
The most common practice for sending emails is to manage them through API Routes. This example showcases Next Route handlers for this.
Resend is the company behind React.email, therefore Resend's SDK is able to process React components as directly in place of HTML.
import { NextResponse } from "next/server";
import { Resend } from "resend";
import Email from "./src/emails/Email";
const resend = new Resend(process.env.RESEND_API_KEY);
export async function POST() {
// You would process the payload from the request to parametrize your email
try {
const data = await resend.emails.send({
from: process.env.RESEND_SENDER,
to: "vorcak@webscope.io",
subject: "Greetings",
react: Email({
greeting: "Hello, Jan Vorcak!",
}),
});
return NextResponse.json(data);
} catch (error) {
return NextResponse.json({ error });
}
}
Useful links
For more information on the resources referenced in this page:
- React.email
render
(opens in a new tab) — transform React components into HTML email templates. - React.email Integrations (opens in a new tab) — leverage different email service providers to send emails using React.
- Resend SDK (opens in a new tab) — Open source client libraries for your favorite platforms.