Перейти к содержимому

Email

Отправляй транзакционные письма из своего приложения. Управляй идентификаторами отправителя и отслеживай доставку в разделе Admin > Email своего приложения.

Каждое приложение Proyecta умеет отправлять транзакционные письма. Верифицируй идентификатор отправителя — и отправляй письма прямо из кода приложения, без отдельного аккаунта у почтового провайдера.

Открой Admin > Email в builder’е — или перейди на /admin своего опубликованного сайта. Раздел состоит из двух частей:

Часть Назначение
Identities Добавление и верификация email-адресов или доменов отправителя
Sent Просмотр отправленных писем со статусом доставки (sent, delivered, bounced и другие)

Ты можешь добавить новый идентификатор отправителя и просматривать историю доставки — всё это без написания кода.

  1. Создай и верифицируй идентификатор отправителя (email-адрес или домен) в панели администратора
  2. Отправляй — из приложения с помощью useSendEmail() или из панели администратора для рассылок

Самый простой путь — зарегистрировать отдельный адрес на общем домене отправки Proyecta, @proyectamail.com. Верификация происходит мгновенно в момент создания: платформа уже владеет этим доменом, поэтому никаких DNS-записей настраивать не нужно.

Сделать это можно в разделе Emails панели администратора твоего приложения: введи нужный адрес — и он сразу готов к работе.

Одиночные адреса работают только на домене @proyectamail.com. Запрос адреса на другом домене (например, hello@myapp.com) будет отклонён — чтобы отправлять письма со своего домена, нужно верифицировать весь домен (см. ниже). Каждый адрес на общем домене зарезервирован глобально, поэтому два приложения не могут использовать одного и того же отправителя @proyectamail.com.

Чтобы отправлять письма со своего домена — с любого адреса на нём (hello@, support@, noreply@ и других) — нужно верифицировать весь домен. В отличие от общего адреса @proyectamail.com, верификация кастомного домена не происходит мгновенно.

Добавь домен в том же разделе Emails. Система зарегистрирует его у почтового провайдера и покажет SPF-, DKIM- и DMARC-записи, которые нужно опубликовать в твоём DNS. Отправитель будет находиться в статусе pending до тех пор, пока записи не распространятся и провайдер их не подтвердит — после этого статус изменится на verified. Используй кнопку повторной проверки после публикации записей.

Верификация домена через DNS полностью реализована: записи генерируются провайдером, а каждая повторная проверка опрашивает их статус.

Под капотом: Proyecta аутентифицирует твой домен отправки через провайдера email-идентификации (Resend) и доставляет сообщения через транзакционный провайдер (SendGrid). Тебе не нужно регистрировать аккаунт ни у одного из них.

Со страниц приложения письма отправляются с помощью хука useSendEmail(). Выбери шаблон и передай переменные — платформа отрендерит сообщение на языке приложения и отправит его:

import { useSendEmail } from '@/hooks/useEmail.ts';
function ConfirmButton({ booking }) {
const { send, isPending, error } = useSendEmail();
return (
<button
disabled={isPending}
onClick={() =>
send({
template: 'booking_confirmation',
variables: { date: booking.date, service: booking.service },
})
}
>
Email me the details
</button>
);
}

Обрати внимание, что ты не передаёшь: получателя, тему письма или HTML. Каждый шаблон сам определяет свою аудиторию:

  • self (подтверждения бронирований/заказов, приветствия) → адрес авторизованного пользователя, взятый из его сессии.
  • owner (owner_alert) → администраторы твоего приложения.

Оба варианта требуют активной сессии. Это намеренное решение, а не упущение: публичный ключ, который аутентифицирует вызов, виден в исходном коде страницы, поэтому возможность отправки на произвольный адрес позволила бы кому угодно использовать твоё приложение как спам-ретранслятор. Чтобы уведомить себя об анонимном посещении, используй форму — заявки из форм автоматически отправляют письмо владельцу и подтверждение отправителю, причём этот путь нельзя подделать через браузер.

Ошибки возвращаются как PlatformApiError: 401 (требуется сессия), 403 (шаблон не включён для этого приложения), 429 (превышен лимит запросов — покажи сообщение и предложи повторить попытку), 422 (адрес не задан).

Вкладка Sent в панели администратора показывает все письма, отправленные приложением, с последним событием доставки — delivered, opened, clicked, bounced, complained — так что, как правило, писать код для этого не нужно вовсе.

Каждая запись содержит статус — sent, delivered, opened, clicked, bounced или complained — и любое письмо можно открыть, чтобы увидеть точный HTML и текст, которые были отправлены. Если доставка не работает, начинай расследование отсюда.

Тебе не нужно делать это вручную:

  • "Verify hello@myapp.com as a sending identity."
  • "Email the customer a confirmation after they finish booking."
  • "After a successful checkout, send the customer their receipt."
  • "Show me the last 20 emails we've sent and whether they bounced."
  • Адрес from должен быть верифицированным. Отправка с неверифицированного адреса вернёт ошибку.
  • Действуют месячные лимиты в зависимости от тарифного плана Proyecta.
  • Редактор шаблонов — визуальное создание транзакционных шаблонов прямо в builder’е
  • Endpoint для массовой/пакетной отправки для рассылок