Installation
Usage
Create an email component
emails/email.tsx
Send the email
index.tsx
Powered by Mintlify
Auto-generate your docs
Send emails with React Email using Nodemailer
Install dependencies
npm install react-email @react-email/components nodemailer
npm install -D @types/nodemailer
import { Button, Html } from '@react-email/components';
interface EmailProps {
url: string;
}
export const Email: React.FC<Readonly<EmailProps>> = ({ url }) => {
return (
<Html lang="en">
<Button href={url}>Click me</Button>
</Html>
);
};
import { render } from '@react-email/components';
import nodemailer from 'nodemailer';
import { Email } from './email';
const transporter = nodemailer.createTransport({
host: 'smtp.forwardemail.net',
port: 465,
secure: true,
auth: {
user: 'my_user',
pass: 'my_password',
},
});
const emailHtml = await render(<Email url="https://example.com" />);
const options = {
from: '[email protected]',
to: '[email protected]',
subject: 'hello world',
html: emailHtml,
};
await transporter.sendMail(options);
const transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'username',
pass: 'password',
},
});
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '[email protected]',
pass: 'your-app-password',
},
});
const transporter = nodemailer.createTransport({
host: 'smtp.sendgrid.net',
port: 587,
auth: {
user: 'apikey',
pass: process.env.SENDGRID_API_KEY,
},
});
await transporter.sendMail({
from: '[email protected]',
to: '[email protected]',
subject: 'hello world',
html: emailHtml,
attachments: [
{
filename: 'document.pdf',
path: '/path/to/document.pdf',
},
],
});
import { render } from '@react-email/components';
const emailHtml = await render(<Email url="https://example.com" />);
const emailText = await render(<Email url="https://example.com" />, {
plainText: true,
});
await transporter.sendMail({
from: '[email protected]',
to: '[email protected]',
subject: 'hello world',
html: emailHtml,
text: emailText,
});