📧 Sistema de Envio de Email - iFriend Agent¶
Visão Geral¶
O agente iFriend possui capacidade de enviar emails profissionais formatados com a identidade visual da marca através da integração com SendGrid.
Características¶
✅ Template HTML Automático¶
TODOS os emails são enviados em HTML com:
- Header: Logo da iFriend centralizada (https://theifriend.com/logo.svg)
- Cores: Gradiente roxo/azul (#667eea → #764ba2) matching do site
- Typography: Fontes system nativas para melhor compatibilidade
- Footer: Informações de contato, redes sociais, endereço
🎨 Identidade Visual¶
Baseada no site oficial theifriend.com:
Cores principais:
- Roxo primário: #667eea
- Roxo secundário: #764ba2
- Gradiente: linear-gradient(135deg, #667eea 0%, #764ba2 100%)
Tipografia:
- Font stack: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial
Layout:
- Max-width: 600px (compatível com todos clientes de email)
- Responsive design
- Padding adequado para mobile
Configuração¶
Variáveis de Ambiente¶
# .env
SENDGRID_API_KEY=SG.xxxxx...
SENDGRID_FROM_EMAIL=noreply@theifriend.com
SENDGRID_FROM_NAME=iFriend
Dependência¶
pip install sendgrid
Como o Agente Usa¶
Fluxo de Uso¶
- Usuário solicita: "Enviar orçamento por email"
- Agente pergunta: "Para qual email desejo enviar?"
- Agente chama:
enviar_email_tool() - Sistema: Aplica template HTML automaticamente
- Retorna: Confirmação de envio
Exemplo de Conversação¶
👤 Usuario: Pode enviar esse orçamento por email?
🤖 Agente: Para qual email desejo enviar?
👤 Usuario: cliente@exemplo.com
🤖 Agente: [chama enviar_email_tool]
✅ Email enviado com sucesso para cliente@exemplo.com!
Como Formatar Conteúdo¶
Opção 1: Texto Simples¶
corpo_mensagem = """
Olá João!
Segue o orçamento solicitado para o Tour Privativo em Roma.
Detalhes:
- Data: 15/12/2025
- Duração: 4 horas
- Valor: R$ 1.500
Atenciosamente,
Equipe iFriend
"""
O sistema converte automaticamente:
- \n\n → </p><p> (parágrafos)
- \n → <br> (quebras de linha)
Opção 2: HTML Estruturado¶
corpo_mensagem = """
<h1>Orçamento Personalizado</h1>
<p>Olá João!</p>
<p>Segue o orçamento solicitado para o Tour Privativo em Roma.</p>
<h2>Detalhes do Serviço</h2>
<table>
<tr>
<th>Item</th>
<th>Detalhes</th>
<th>Valor</th>
</tr>
<tr>
<td>Tour Privativo - Roma Antiga</td>
<td>4 horas, Guia em Português</td>
<td>R$ 1.500</td>
</tr>
<tr>
<td>Transfer Hotel-Ponto de Encontro</td>
<td>Ida e volta</td>
<td>R$ 200</td>
</tr>
</table>
<p class="price">Total: R$ 1.700</p>
<div class="highlight">
<strong>🎉 Oferta Especial:</strong> Reserve até 30/11 e ganhe 10% de desconto!
</div>
<p>Atenciosamente,<br>Equipe iFriend</p>
"""
Tags HTML Suportadas¶
Títulos¶
<h1>Título Principal</h1> <!-- Roxo #667eea, 24px -->
<h2>Subtítulo</h2> <!-- Roxo secundário #764ba2, 20px -->
<h3>Seção</h3> <!-- Roxo #667eea, 18px -->
Texto¶
<p>Parágrafo normal</p>
<strong>Texto em negrito</strong>
<br>Quebra de linha
Destaque de Preço¶
<p class="price">Total: R$ 1.500</p>
<!-- Fonte 24px, cor roxa, negrito -->
Caixa Destacada¶
<div class="highlight">
<strong>Importante:</strong> Informação relevante aqui
</div>
<!-- Background azul claro, borda roxa à esquerda -->
Tabelas¶
<table>
<tr>
<th>Coluna 1</th>
<th>Coluna 2</th>
</tr>
<tr>
<td>Dados 1</td>
<td>Dados 2</td>
</tr>
</table>
<!-- Estilização automática com header roxo -->
Links¶
<a href="https://theifriend.com">Visite nosso site</a>
<!-- Cor roxa, sem sublinhado por padrão -->
Exemplos de Uso¶
1. Orçamento de Tour¶
await enviar_email_tool(
destinatario_email="cliente@exemplo.com",
assunto="Orçamento iFriend - Tour Privativo em Paris",
corpo_mensagem="""
<h1>Orçamento - Tour Privativo em Paris</h1>
<p>Olá Maria!</p>
<p>Ficamos felizes com seu interesse! Segue o orçamento para o tour solicitado:</p>
<h2>Detalhes do Passeio</h2>
<table>
<tr><th>Item</th><th>Descrição</th><th>Valor</th></tr>
<tr>
<td>Tour Privativo</td>
<td>6 horas, Guia em Português<br>Torre Eiffel, Louvre, Arc de Triomphe</td>
<td>R$ 2.800</td>
</tr>
</table>
<p class="price">Total: R$ 2.800</p>
<div class="highlight">
<strong>✨ Incluso:</strong> Guia oficial, ingressos Torre Eiffel, água mineral
</div>
<p>Para confirmar sua reserva, basta responder este email!</p>
<p>Atenciosamente,<br><strong>Equipe iFriend</strong></p>
"""
)
2. Confirmação de Reserva¶
await enviar_email_tool(
destinatario_email="cliente@exemplo.com",
assunto="✅ Confirmação de Reserva #12345 - iFriend",
corpo_mensagem="""
<h1>🎉 Reserva Confirmada!</h1>
<p>Olá João!</p>
<p>Sua reserva foi confirmada com sucesso. Estamos ansiosos para tornar sua viagem inesquecível!</p>
<h2>Dados da Reserva</h2>
<table>
<tr><th>Item</th><th>Informação</th></tr>
<tr><td>Código da Reserva</td><td><strong>#12345</strong></td></tr>
<tr><td>Serviço</td><td>Tour Privativo - Roma Antiga</td></tr>
<tr><td>Data</td><td>15 de dezembro de 2025</td></tr>
<tr><td>Horário</td><td>09:00</td></tr>
<tr><td>Guia</td><td>Marcello Silva</td></tr>
<tr><td>Participantes</td><td>2 adultos</td></tr>
</table>
<p class="price">Valor Total: R$ 1.500</p>
<div class="highlight">
<strong>📍 Ponto de Encontro:</strong><br>
Coliseu - Entrada Principal<br>
Piazza del Colosseo, 1, Roma
</div>
<h3>Informações Importantes</h3>
<p>• Chegue 10 minutos antes do horário agendado</p>
<p>• Traga documento com foto</p>
<p>• Cancelamento gratuito até 14 dias antes</p>
<p>Qualquer dúvida, estamos à disposição!</p>
<p>Atenciosamente,<br><strong>Equipe iFriend</strong></p>
"""
)
3. Proposta Comercial¶
await enviar_email_tool(
destinatario_email="agencia@exemplo.com",
assunto="Proposta iFriend - Pacote Corporativo Europa",
corpo_mensagem="""
<h1>Proposta Comercial - Pacote Europa</h1>
<p>Olá Fernanda!</p>
<p>Conforme solicitado, segue nossa proposta para o grupo de 15 executivos:</p>
<h2>Itinerário Proposto</h2>
<h3>Dia 1 - Paris</h3>
<table>
<tr><th>Serviço</th><th>Descrição</th><th>Valor Unit.</th></tr>
<tr><td>Tour Privativo</td><td>6h, 3 guias (5 pax/guia)</td><td>R$ 2.800</td></tr>
<tr><td>Transfer</td><td>Van executiva aeroporto-hotel</td><td>R$ 800</td></tr>
</table>
<h3>Dia 2 - Londres</h3>
<table>
<tr><th>Serviço</th><th>Descrição</th><th>Valor Unit.</th></tr>
<tr><td>Tour Privativo</td><td>8h, 3 guias</td><td>R$ 3.500</td></tr>
</table>
<p class="price">Investimento Total: R$ 42.800</p>
<div class="highlight">
<strong>🎁 Desconto Corporativo:</strong> 15% para grupos acima de 10 pessoas<br>
<strong>Valor Final:</strong> R$ 36.380
</div>
<h2>Diferenciais iFriend</h2>
<p>✓ Guias bilíngues certificados</p>
<p>✓ Roteiros personalizados</p>
<p>✓ Suporte 24h em português</p>
<p>✓ Pagamento parcelado sem juros</p>
<p>Proposta válida até 30/11/2025.</p>
<p>Atenciosamente,<br><strong>Equipe Comercial iFriend</strong></p>
"""
)
Anatomia do Template¶
Estrutura Completa¶
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<!-- Meta tags e CSS inline -->
</head>
<body>
<div class="email-container">
<!-- HEADER -->
<div class="header">
<img src="https://theifriend.com/logo.svg" alt="iFriend" class="logo">
</div>
<!-- CONTEÚDO (seu corpo_mensagem aqui) -->
<div class="content">
{corpo_mensagem}
</div>
<!-- FOOTER -->
<div class="footer">
<p><strong>iFriend - Guias Locais para Viagens Inesquecíveis</strong></p>
<p>Presença global em +2600 cidades em 130 países</p>
<div class="social-links">
<a href="https://www.facebook.com/TheIFriend">Facebook</a> •
<a href="https://www.instagram.com/the_ifriend">Instagram</a> •
<a href="https://www.linkedin.com/company/ifriend/">LinkedIn</a>
</div>
<p>
<strong>Central de Vendas:</strong><br>
WhatsApp: <a href="https://wa.me/5521974974320">+55 21 97497-4320</a><br>
Telefone: <a href="tel:+552140404221">+55 21 4040-4221</a><br>
Email: <a href="mailto:contato@theifriend.com">contato@theifriend.com</a>
</p>
<p style="font-size: 12px; margin-top: 20px;">
Av. Almirante Barroso 81, 34º andar<br>
Centro, Rio de Janeiro/RJ - 20031-004<br>
Copyright © 2025 The iFriend
</p>
</div>
</div>
</body>
</html>
Retorno da Função¶
Sucesso¶
{
"success": True,
"message": "Email enviado com sucesso para cliente@exemplo.com",
"status_code": 202,
"message_id": "abc123xyz..."
}
Erro¶
{
"success": False,
"message": "Email inválido: cliente@exemplo"
}
Boas Práticas¶
✅ Faça¶
- Use títulos (
<h1>,<h2>) para estruturar o conteúdo - Coloque preços em
<p class="price">para destaque - Use
<div class="highlight">para informações importantes - Organize dados em tabelas para melhor legibilidade
- Seja conciso e objetivo
- Personalize com o nome do destinatário
- Inclua call-to-action claro
❌ Evite¶
- Emails muito longos (+ de 2 telas)
- Múltiplas fontes ou cores customizadas (use as do template)
- Imagens externas (além da logo que já está no header)
- JavaScript ou CSS complexo
- Tabelas muito largas (max 3 colunas)
Compatibilidade¶
✅ Testado e compatível com: - Gmail (web, mobile) - Outlook (web, desktop) - Apple Mail - Yahoo Mail - ProtonMail
Troubleshooting¶
Email não chega¶
- Verificar SENDGRID_API_KEY no .env
- Confirmar email do destinatário está correto
- Checar logs do SendGrid
- Verificar se não está em spam
Formatação quebrada¶
- Usar apenas tags HTML suportadas
- Fechar todas as tags corretamente
- Evitar CSS inline personalizado
- Testar com diferentes clientes de email
Logs¶
# Sucesso
[enviar_email_tool] Enviando email para: cliente@exemplo.com
[enviar_email_tool] ✅ Email enviado com sucesso! Status: 202
# Erro
[enviar_email_tool] ❌ Erro ao enviar email: Invalid API key
Próximas Melhorias¶
- [ ] Anexos (PDFs, imagens)
- [ ] Templates pré-definidos (orçamento, confirmação, lembrete)
- [ ] Agendamento de envio
- [ ] Múltiplos destinatários (CC, BCC)
- [ ] Tracking de abertura/cliques
- [ ] Variáveis de personalização em massa
Documentação atualizada: 6 de dezembro de 2025