Перейти к содержимому
supastack
Обзор документации
WebNext.js

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/web/email.md (or send Accept: text/markdown).

Почта и отправка

Транзакционные шаблоны, инструменты предпросмотра и адаптеры провайдеров.

Задать вопрос об этом руководстве
Открыть в

Прочитайте свое первое локальное сообщение, а затем включите доставку.

Транзакционное электронное письмо означает сообщение, вызванное действием приложения, например кодом входа или результатом задачи. При работающем веб-сервере оставьте EMAIL_PROVIDER=local в apps/web/.env.local.. Завершите настройку базы данных, запросите код входа в /auth, затем откройте /mail-preview и проверьте последнее сообщение. Локальное сообщение, показанное здесь, не является электронным письмом, доставленным во внешний почтовый ящик.

Чтобы отправлять настоящие сообщения, выберите одного поставщика электронной почты, создайте его учетную запись, подтвердите контролируемый вами домен и следуйте его специальному руководству. Поместите названный ключ API и адрес отправителя в apps/web/.env.local, сохраните и перезапустите веб-сервер. Запросите один новый код входа, затем проверьте журнал доставки поставщика и почтовый ящик назначения, включая спам. Проверка домена и одобрение отправителя могут занять время.

Если сообщение не получено, проверьте ошибку доставки и проверку отправителя, прежде чем отправлять повторный запрос. Маршрут /mail-preview предназначен только для разработки и возвращает 404 в рабочей среде. Отделите маркетинговую деятельность от этого отправителя транзакций, чтобы информационная кампания не могла помешать отправке писем для подтверждения учетной записи.

Держите транзакционную доставку отдельно

Почтовый модуль обрабатывает транзакционные продуктовые сообщения, включая аутентификацию и завершение задач. Рассылки принадлежат собственному процессу потребляющего продукта и должны оставаться отдельными от этого транзакционного пути.

Настройте адаптер доставки

Используйте локальный адаптер для детерминированных тестов. Настройте выбранный продакшен-адаптер и его серверные креденшелы до включения внешней доставки. Никогда не помещайте секреты почтового провайдера в клиентскую конфигурацию или логи.

Записывайте доставку независимо

Сгенерированный результат и его письмо о завершении имеют отдельные исходы. Инспектируйте записи доставки до заявления об успешной отправке сообщения. Тестируйте неудачную доставку, не считая её неудачной генерацией и не отправляя дублирующую работу модели.

Настройка и конфигурация

EMAIL_PROVIDER=local держит доставку детерминированной во время разработки. Для продакшен-доставки выберите один из настроенных адаптеров — Resend (RESEND_API_KEY), AWS SES (AWS_REGION плюс ключи доступа), Postmark, SendGrid, Mailgun, generic SMTP или Brevo — и проверьте, что EMAIL_FROM совпадает с личностью отправителя, которую провайдер принимает.

Все шаблоны живут в src/transactional-mail-templates.ts. Dev-only маршрут /mail-preview рендерит каждый шаблон, чтобы изменения рецензировались визуально, а не отправкой почты.

EMAIL_PROVIDER=resend
EMAIL_FROM=Your Product <[email protected]>

Рабочий процесс внедрения

Коды аутентификации, magic-ссылки, приглашения, биллинг-уведомления и письма о завершении задач проходят через одного транзакционного отправителя с текстом разрешённой локали. Аутрич-кампании — отдельная продуктовая забота и никогда не разделяют этот путь.

Предпросматривайте шаблон в mail-preview до редактирования текста или разметки; держите значения бренда (имя, цвета, плитки логотипа) идущими из конфигурации, чтобы производные продукты рестайлили без форка шаблонов.

Проверка и устранение неполадок

В тестах проверяйте записанные сообщения локального адаптера — получателя, тему и отрисованное тело. Неудачная отправка должна всплывать как результат доставки, а не как упавший workflow. Используйте необязательный smoke-путь с REAL_SMOKE_EMAIL_ALLOWED_DOMAIN для реальной доставки.

Часто задаваемые вопросы

14 вопросов

Что такое supastack?

supastack — модульная основа для создания SaaS-продуктов с AI. Она объединяет общую инфраструктуру, чтобы вы могли сосредоточиться на продуктовых функциях.

Поддерживает ли он web и mobile?

Да. supastack включает приложения Next.js и Expo как отправные точки для web- и мобильных интерфейсов.

Какая аутентификация включена?

Better Auth покрывает e-mail/пароль, OTP и социальный вход. Личные воркспейсы провижинируются вместе с аккаунтом, чтобы продуктовые записи были ограничены с первого дня.

Как он поддерживает AI?

supastack включает настраиваемый мультипровайдерный AI, учёт использования, бюджеты и зашифрованную поддержку bring-your-own-key.

Как обрабатываются подписки?

Для продуктов на ките Stripe-биллинг, подписки и права доступа образуют основу платного доступа. Секреты провайдеров остаются только на сервере.

Где живёт мой продуктовый код?

Продуктовые функции остаются в отдельном коде, а продукт настраивает и интегрирует модули основы supastack.

Как устроены цены supastack?

Кит — разовая покупка с пожизненными обновлениями: один фреймворк за $249 (временная стартовая цена — скидка $100 от стандартной цены $349) или все фреймворки (Next.js, iOS, Android) за $499 (временная стартовая цена — скидка $100 от стандартной цены $599), плюс $75 за каждое дополнительное место разработчика. Без подписки на кит. Оплата на этом сайте доставляет лицензионный ключ по e-mail, доступ к репозиторию — через приглашение GitHub.

Как воркспейсы ограничивают мои данные?

Записи пользователей ограничены по workspaceId. Идентичность, права доступа, AI-использование, события биллинга и записи аудита остаются внутри границы личного воркспейса.

Как работают фоновые задачи?

Trigger.dev — явный рантайм задач. Контракт JobRunner обещает только enqueue, status и cancel — семантика workflow остаётся специфичной для Trigger.dev и явной.

Чем почта отличается от рассылок?

Транзакционная почта покрывает продуктовые сценарии вроде уведомлений о завершении. Холодные рассылки и кампании — забота продукта, вне почтового модуля этого кита.

Как работают покупки в мобильном приложении?

Мобильное приложение поддерживает нативные покупки и восстановление через RevenueCat, а сервер проверяет доступ. Настройте аккаунты магазинов и завершите тестирование на устройствах перед публикацией. Веб-оплата остается отдельной.

Где хранятся ключи AI-провайдеров?

Bring-your-own-key креденшелы зашифрованы и остаются только на сервере. Ключи удаляются из логов; использование и бюджеты видны на уровне воркспейса.

Какие способы оплаты принимает оформление заказа?

Оформление заказа на Stripe принимает карты, а после включения кошельков в аккаунте Stripe может также предлагать Alipay и WeChat Pay — удобно для покупателей из Китая. Авторизации кошельков подтверждаются асинхронно, поэтому страница лицензии обновляется, как только платёж завершается.

Могу ли я получить возврат средств?

После получения доступа к репозиторию supastack остается вашим навсегда, поэтому возврат средств невозможен. Но будьте уверены: вы получаете полный исходный код с пожизненными обновлениями для создания и запуска неограниченного числа продуктов для себя или клиентов. Вы лишь не можете перепродавать код или распространять репозиторий как стартовый набор или шаблон.

RU
Тема