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:
{
"__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:
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:
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.