Como integrar o serviço de email Resend com Edge Functions

Este guia demonstra como integrar o serviço de email Resend com Azion Edge Functions para enviar emails transacionais diretamente do edge. Esta integração fornece entrega de email rápida e confiável com performance otimizada e alcance global.

Requisitos

Antes de começar, certifique-se de ter:

Código

Esse é um exemplo de como usar o Resend com Azion Edge Functions para enviar emails transacionais. O exemplo completo de código você pode encontrar no repositório do GitHub.

import { Hono } from "hono";
import { fire } from "hono/service-worker";
const app = new Hono();
const RESEND_API_KEY = process.env.RESEND_API_KEY!;
const EMAIL_TO = "your.email@azion.com";
app.get("/", async (c) => {
const res = await fetch("https://api.resend.com/emails", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${RESEND_API_KEY}`,
},
body: JSON.stringify({
from: "onboarding@resend.dev",
to: EMAIL_TO,
subject: "hello world",
html: "<strong>it works!</strong>",
}),
});
const data: any = await res.json();
return c.json(data);
});
fire(app);

Deploy na Azion

Passo 1: Autentique-se na Azion

  1. Faça login na sua conta Azion via CLI:
Terminal window
azion login
  1. Siga os prompts de autenticação para conectar sua CLI com sua conta Azion.

Passo 2: Crie secrets para chaves de API

Para segurança, armazene sua chave de API do Resend como um secret:

Terminal window
azion create secret RESEND_API_KEY

Quando solicitado, digite sua chave de API do Resend. Isso garante que seus dados sensíveis sejam criptografados e seguros.

Passo 3: Faça o deploy da Edge Function

Faça o deploy de sua aplicação de email na edge network da Azion:

Terminal window
azion deploy

O processo de deploy irá:

  • Fazer upload do código da sua Edge Function
  • Configurar a edge application
  • Configurar as regras de roteamento necessárias
  • Configurar variáveis de ambiente e secrets
  • Fornecer um domínio único

Passo 4: Acesse sua aplicação

Após o deploy, você receberá um domínio como https://xxxxxxx.map.azionedge.net. Sua aplicação de email estará disponível nesta URL em alguns minutos após a propagação do DNS.

Entendendo a implementação

Processo de envio de email

A Edge Function do Resend tipicamente manipula:

  1. Validação de requisição: Verificação de parâmetros de email e autenticação
  2. Composição de email: Construção de conteúdo de email com templates
  3. Integração com API: Comunicação com a API do Resend
  4. Manipulação de resposta: Processamento de respostas da API e erros
  5. Registro: Registro de atividades de envio de email

Principais benefícios

  • Performance: Processamento de email no edge reduz latência
  • Confiabilidade: Infraestrutura robusta do Resend garante entrega
  • Escalabilidade: Escala automaticamente com a demanda
  • Alcance global: Edge locations oferecem cobertura mundial
  • Eficiência de custo: Custos otimizados de entrega de email

Testando sua aplicação de email

Passo 1: Teste a funcionalidade de envio de email

  1. Navegue até sua aplicação implementada
  2. Use o formulário de email para enviar emails de teste
  3. Verifique se os emails são entregues aos destinatários
  4. Verifique formatação e conteúdo do email

Passo 2: Teste tratamento de erros

  1. Endereços de email inválidos: Teste com endereços de email malformados
  2. Rate limiting: Teste com requisições sucessivas rápidas
  3. Falhas de autenticação: Teste com chaves de API inválidas
  4. Problemas de rede: Teste tratamento de erros para falhas da API

Passo 3: Testes de performance

  1. Tempo de resposta: Meça tempos de resposta de envio de email
  2. Requisições simultâneas: Teste múltiplos envios de email simultâneos
  3. Taxas de erro: Monitore taxas de sucesso e falha

Casos de uso comuns

  • Emails de boas-vindas: Enviar emails de onboarding para novos usuários
  • Redefinição de senhas: Lidar com notificações de email de redefinição de senha
  • Confirmações de pedidos: Enviar emails transacionais para compras
  • Emails de notificação: Enviar alertas e atualizações aos usuários
  • Formulários de contato: Lidar com submissões de formulários com notificações por email

Templates de email e personalização

Usando templates HTML

Crie templates de email dinâmicos com placeholders:

<!DOCTYPE html>
<html>
<head>
<title>Bem-vindo ao Nosso Serviço</title>
</head>
<body>
<h1>Bem-vindo, {{nome}}!</h1>
<p>Obrigado por se juntar à {{empresa}}. Estamos empolgados em tê-lo conosco.</p>
<p>Sua conta agora está ativa e pronta para uso.</p>
</body>
</html>

Variáveis de template

Substitua placeholders com conteúdo dinâmico:

const emailTemplate = html.replace('{{nome}}', userData.name)
.replace('{{empresa}}', 'Sua Empresa');

Solução de problemas

Problemas comuns e soluções

  • Falhas de entrega de email: Verifique validade da chave de API e configuração do domínio
  • Rate limiting: Implemente throttling de requisições adequado
  • Renderização de template: Verifique sintaxe do template e substituição de variáveis
  • Erros de autenticação: Certifique-se de que a chave de API esteja configurada corretamente como secret

Melhores práticas de tratamento de erros

  1. Registro detalhado: Registre todas as tentativas de envio de email e resultados
  2. Mecanismos de retry: Implemente lógica de retry para falhas temporárias
  3. Degradação eficiente: Lide com downtime da API adequadamente
  4. Feedback do usuário: Forneça mensagens de status claras aos usuários

Considerações de segurança

Gerenciamento de chaves de API

  • Use secrets: Sempre armazene chaves de API como secrets da Azion
  • Rotacione regularmente: Rotacione periodicamente suas chaves de API
  • Monitore uso: Rastreie uso de chaves de API e padrões de acesso
  • Limite permissões: Use chaves de API com permissões mínimas necessárias

Validação de entrada

  • Validação de email: Valide endereços de email antes do envio
  • Sanitização de conteúdo: Limpe e valide conteúdo de email
  • Rate limiting: Implemente rate limiting para prevenir abuso
  • Autenticação: Adicione autenticação adequada aos seus endpoints de email

Recursos avançados

Envio de email em lote

Implemente funcionalidade de email em lote para campanhas de newsletter e marketing:

async function sendBatchEmails(recipients, template) {
const batchSize = 100;
for (let i = 0; i < recipients.length; i += batchSize) {
const batch = recipients.slice(i, i + batchSize);
await processBatch(batch, template);
}
}

Rastreamento de email

Adicione capacidades de rastreamento para monitorar engajamento de email:

  • Rastreamento de abertura: Rastreie quando emails são abertos
  • Rastreamento de cliques: Monitore cliques em links nos emails
  • Tratamento de bounce: Lide com emails devolvidos (bounces) adequadamente
  • Gerenciamento de unsubscribe: Processe solicitações de cancelamento de inscrição (unsubscribe)

Próximos passos

  • Explore técnicas avançadas de criação de templates de email
  • Implemente analytics e rastreamento de email
  • Adicione agendamento de email e envio atrasado
  • Integre com outros produtos Azion como Edge Storage
  • Monitore performance de entrega de email e otimize adequadamente