Ir para o conteúdo
decodecodeveloper docs
Storefront → Templates → Commerce

Resend

Configure email transacional em um site Blocks 7.x.

@decocms/apps-resend envia emails transacionais pelo servidor. O site implementa o formulário e a validação; o app fornece a integração com o provedor. Consulte a referência 7.x para o contrato completo.

Configure

Defina remetente, destinatários e assunto padrão:

.deco/blocks/deco-resend.json
{
  "__resolveType": "deco-resend",
  "emailFrom": { "name": "My Store", "domain": "hello@store.example.com" },
  "emailTo": ["team@store.example.com"],
  "subject": "Contact form submission"
}

emailFrom.domain é o endereço completo do remetente, apesar do nome. Verifique seu domínio no Resend. Defina RESEND_API_KEY no ambiente do servidor; a autoconfiguração usa essa variável quando não há chave salva. Chaves criptografadas usam o mecanismo de secret da integração.

Wiring

Execute este módulo depois do setup, apenas no servidor:

src/setup/apps.ts
import { autoconfigApps, type AppRegistry } from "@decocms/blocks-admin/apps";
import { loadBlocks } from "@decocms/blocks/cms";
import { RESEND_REGISTRY_ENTRY } from "@decocms/apps-resend/registry";
import * as resendMod from "@decocms/apps-resend/mod";
 
const APP_REGISTRY: AppRegistry = [
  { ...RESEND_REGISTRY_ENTRY, module: async () => resendMod },
];
 
await autoconfigApps(loadBlocks(), APP_REGISTRY);

Não há entrada Resend implícita no registro. A alternativa é configureResend, de @decocms/apps-resend/client, com uma chave resolvida pelo seu código de servidor.

Enviando email

Crie uma action com destinatários fixados no servidor, em vez de aceitar destinatários arbitrários do browser:

src/actions/contact.ts
import { sendEmail } from "@decocms/apps-resend";
 
export interface Props {
  email: string;
  message: string;
}
 
export default async function contact(props: Props) {
  const { data, error } = await sendEmail({
    reply_to: props.email,
    text: props.message,
  });
  if (error) return { ok: false, reason: error.name };
  return { ok: true, id: data?.id };
}

O resultado normal do provedor é { data, error }: sucesso inclui data.id; erros de validação ou do provedor preenchem error. Falhas de rede, timeout e configuração ausente ainda podem lançar exceções. Trate os dois casos conforme a política de entrega da aplicação.

Handler de invoke

Coloque uma action validada como contact em src/actions/ e rode o gerador para registrá-la. A integração não oferece um endpoint universal de email para o browser. Veja Loaders e actions.

Entradas e resultado

O payload aceita from, to, subject, html, text e reply_to. Valores passados substituem os padrões configurados. Veja os campos suportados.

Uma resposta aceita identifica a mensagem; não comprova a entrega final. Acompanhe o status pela integração com o provedor.

Templates

Renderize templates no servidor e passe o HTML para sendEmail.

Limites e estabilidade

Use a quota atual do provedor para decidir quando enfileirar envios e trate error mesmo em tarefas assíncronas. Antes de adicionar notificações, confira se a plataforma de commerce já as envia.

Estas instruções são da integração 7.x publicada. A configuração editada no Site Editor é entregue pelo fluxo do repositório.

Veja também