MonoStack

Getting Started

1. Create a Svelte email component

<!-- src/lib/emails/Hello.svelte -->
<script lang="ts">
  import { MJMLStyle } from '@repo/notifications'

  type Props = { name: string }
  const { name }: Props = $props()
</script>

<mjml>
  <mj-head>
    <MJMLStyle class="heading">color: #333; font-size: 24px;</MJMLStyle>
  </mj-head>
  <mj-body>
    <mj-section>
      <mj-column>
        <mj-text css-class="heading">Hello, {name}!</mj-text>
      </mj-column>
    </mj-section>
  </mj-body>
</mjml>

2. Render and send with nodemailer

import { renderEmail } from '@repo/notifications'
import Hello from '$lib/emails/Hello.svelte'
import nodemailer from 'nodemailer'

const transporter = nodemailer.createTransport({
  host: 'smtp.ethereal.email',
  port: 587,
  secure: false,
  auth: {
    user: 'my_user',
    pass: 'my_password',
  },
})

const emailHtml = renderEmail(Hello, {
  name: 'John Doe',
})

const options = {
  from: 'you@example.com',
  to: 'user@gmail.com',
  subject: 'hello world',
  html: emailHtml,
}

transporter.sendMail(options)

On this page