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:
- Uma conta na Azion
- Uma conta no Resend com acesso à API
- Azion CLI instalada e configurada
- Node.js versão 18 ou superior
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
- Faça login na sua conta Azion via CLI:
azion login
- 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:
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:
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:
- Validação de requisição: Verificação de parâmetros de email e autenticação
- Composição de email: Construção de conteúdo de email com templates
- Integração com API: Comunicação com a API do Resend
- Manipulação de resposta: Processamento de respostas da API e erros
- 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
- Navegue até sua aplicação implementada
- Use o formulário de email para enviar emails de teste
- Verifique se os emails são entregues aos destinatários
- Verifique formatação e conteúdo do email
Passo 2: Teste tratamento de erros
- Endereços de email inválidos: Teste com endereços de email malformados
- Rate limiting: Teste com requisições sucessivas rápidas
- Falhas de autenticação: Teste com chaves de API inválidas
- Problemas de rede: Teste tratamento de erros para falhas da API
Passo 3: Testes de performance
- Tempo de resposta: Meça tempos de resposta de envio de email
- Requisições simultâneas: Teste múltiplos envios de email simultâneos
- 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
- Registro detalhado: Registre todas as tentativas de envio de email e resultados
- Mecanismos de retry: Implemente lógica de retry para falhas temporárias
- Degradação eficiente: Lide com downtime da API adequadamente
- 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