Разработка и вёрстка шаблонов транзакционных email (React Email)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка и вёрстка шаблонов транзакционных email (React Email)
Простая
~3-5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Разработка и вёрстка шаблонов транзакционных email (React Email)

React Email — библиотека от команды Resend, позволяющая создавать email-шаблоны прямо в JSX с TypeScript, с полным контролем через компоненты. Никаких HTML-таблиц вручную — компоненты <Section>, <Row>, <Column> генерируют совместимый HTML за вас.

Установка и базовая структура

npm install @react-email/components react react-dom
npm install -D @react-email/render

Шаблон — это обычный React-компонент, экспортирующий JSX:

import {
  Body, Button, Column, Container, Head, Heading,
  Hr, Html, Img, Link, Preview, Row, Section, Text
} from '@react-email/components';

interface OrderConfirmationProps {
  orderId: string;
  customerName: string;
  items: { name: string; qty: number; price: string }[];
  total: string;
  orderUrl: string;
}

export default function OrderConfirmation({
  orderId,
  customerName,
  items,
  total,
  orderUrl,
}: OrderConfirmationProps) {
  return (
    <Html lang="ru">
      <Head />
      <Preview>Заказ #{orderId} подтверждён — спасибо за покупку</Preview>

      <Body style={{ backgroundColor: '#f9fafb', fontFamily: 'Inter, Arial, sans-serif' }}>
        <Container style={{ maxWidth: 600, margin: '0 auto', backgroundColor: '#fff', borderRadius: 12 }}>
          {/* Шапка */}
          <Section style={{ padding: '24px 32px 0' }}>
            <Img src="https://example.com/logo.png" width={120} alt="Logo" />
          </Section>

          {/* Контент */}
          <Section style={{ padding: '24px 32px' }}>
            <Heading style={{ fontSize: 24, color: '#111827', marginTop: 0 }}>
              Заказ #{orderId} подтверждён ✓
            </Heading>
            <Text style={{ color: '#374151' }}>
              Привет, {customerName}! Ваш заказ принят и передан в обработку.
            </Text>

            {/* Позиции заказа */}
            {items.map((item, i) => (
              <Row key={i} style={{ borderBottom: '1px solid #e5e7eb', padding: '8px 0' }}>
                <Column style={{ color: '#111827' }}>{item.name}</Column>
                <Column style={{ textAlign: 'right', color: '#6b7280' }}>
                  {item.qty} × {item.price}
                </Column>
              </Row>
            ))}

            <Row style={{ paddingTop: 12 }}>
              <Column style={{ fontWeight: 700 }}>Итого</Column>
              <Column style={{ textAlign: 'right', fontWeight: 700 }}>{total}</Column>
            </Row>
          </Section>

          {/* CTA */}
          <Section style={{ padding: '0 32px 32px', textAlign: 'center' }}>
            <Button
              href={orderUrl}
              style={{
                backgroundColor: '#3b82f6',
                color: '#fff',
                padding: '12px 24px',
                borderRadius: 8,
                fontWeight: 600,
                fontSize: 16,
              }}
            >
              Отслеживать заказ
            </Button>
          </Section>

          {/* Футер */}
          <Section style={{ padding: '16px 32px', textAlign: 'center' }}>
            <Text style={{ fontSize: 13, color: '#9ca3af' }}>
              © 2026 Example Inc. ·{' '}
              <Link href="{{unsubscribeUrl}}" style={{ color: '#9ca3af' }}>
                Отписаться
              </Link>
            </Text>
          </Section>
        </Container>
      </Body>
    </Html>
  );
}

Рендеринг в HTML для отправки

import { render } from '@react-email/render';
import OrderConfirmation from './emails/OrderConfirmation';

const html = render(
  <OrderConfirmation
    orderId="12345"
    customerName="Иван"
    items={order.items}
    total="5 430 ₽"
    orderUrl="https://example.com/orders/12345"
  />
);

// Передаём готовый HTML в любой email-сервис
await resend.emails.send({
  from: '[email protected]',
  to: customer.email,
  subject: `Заказ #12345 подтверждён`,
  html,
});

Локальная разработка с превью

React Email поставляется с dev-сервером для предпросмотра в браузере:

npx react-email dev --dir ./emails --port 3001

Откроется интерфейс по адресу http://localhost:3001 — список всех шаблонов, live reload при изменениях. Можно переключать режимы Desktop/Mobile/Code/HTML прямо в браузере.

Преимущества перед MJML

  • TypeScript-first — пропсы типизированы, ошибки видны в IDE
  • Компонентизация<EmailButton>, <ProductRow>, <Footer> переиспользуются
  • Тест через jestrender() возвращает строку, можно snapshot-тестировать
  • Единый стек — React-разработчики пишут шаблоны без изучения XML-синтаксиса

Сроки

Набор из 3–5 транзакционных шаблонов (order, reset password, welcome, invoice) — 2–4 дня.