---
name: email
description: >-
  Email sending patterns for The Boring JavaScript Stack — sails-hook-mail configuration, EJS templates, SMTP/Resend transports, and transactional email patterns. Use this skill when configuring mail, writing email templates, or sending transactional emails in a Sails.js application.
metadata:
  author: sailscastshq
  version: '1.0.0'
  tags: email, mail, smtp, resend, templates, ejs, transactional, boring-stack
title: email
canonical_url: https://skilld.dev/gh/sailscastshq/boring-stack/email
last_updated: 2026-09-29T04:28:57.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [metadata.json](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/metadata.json), [README.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/README.md), [rules/getting-started.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/getting-started.md), [rules/providers.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/providers.md), [rules/sending-emails.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/sending-emails.md), [rules/templates.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/templates.md), [rules/transactional-patterns.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/transactional-patterns.md).
>
> If the user asked to install this Skill, run `npx skilld install sailscastshq/boring-stack/email`. Install writes the Skill files into the project, so every session loads them.

# Email

The Boring JavaScript Stack uses `sails-hook-mail` for email delivery. It provides a simple API for sending emails through configurable transports (SMTP, Resend, log) with EJS-based templates and a shared layout system.

## When to Use

Use this skill when:

- Configuring `sails-hook-mail` in `config/mail.js` (transports, from address, mailers)
- Writing EJS email templates in `views/emails/`
- Using the shared email layout (`views/layouts/layout-email.ejs`)
- Sending emails via `sails.helpers.mail.send.with()`
- Setting up SMTP providers (Mailgun, SendGrid, AWS SES) or Resend
- Implementing transactional email patterns (verification, password reset, magic links, 2FA codes)
- Switching between log transport (development) and real transports (production)

## Rules

Read individual rule files for detailed explanations and code examples:

- [rules/getting-started.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/getting-started.md) - Sails Mail overview, config/mail.js, transports, from address
- [rules/sending-emails.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/sending-emails.md) - sails.helpers.mail.send API, parameters, error handling, async patterns
- [rules/templates.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/templates.md) - EJS email templates, layout-email.ejs, template variables, examples
- [rules/providers.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/providers.md) - SMTP config, Resend config, environment variables, per-environment setup
- [rules/transactional-patterns.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/email/rules/transactional-patterns.md) - Common patterns: verification, password reset, magic link, 2FA, invitations
