Skip to content

📧 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

  1. Usuário solicita: "Enviar orçamento por email"
  2. Agente pergunta: "Para qual email desejo enviar?"
  3. Agente chama: enviar_email_tool()
  4. Sistema: Aplica template HTML automaticamente
  5. 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 -->
<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

  1. Verificar SENDGRID_API_KEY no .env
  2. Confirmar email do destinatário está correto
  3. Checar logs do SendGrid
  4. Verificar se não está em spam

Formatação quebrada

  1. Usar apenas tags HTML suportadas
  2. Fechar todas as tags corretamente
  3. Evitar CSS inline personalizado
  4. 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