GMAIL - Envio de E-mails via Gmail API
O que é este Node?
O GMAIL é o node responsável por enviar e-mails através da API do Gmail de forma leve e simplificada. Ele faz parte dos Lightweight Executors, oferecendo uma implementação baseada em HTTP para integração rápida com o Gmail.
Por que este Node existe?
Muitos fluxos de automação precisam enviar e-mails profissionais usando contas do Gmail, seja para notificações, confirmações, ou comunicação com clientes. O GMAIL existe para:
- Envio Profissional: Enviar e-mails usando a infraestrutura confiável do Gmail
- Integração Rápida: Implementação leve sem necessidade de configurações complexas
- Rastreamento: Gerar IDs de mensagem e thread para acompanhamento
- Automação: Integrar envio de e-mails em fluxos automatizados do WhatsApp
Como funciona internamente?
Quando o GMAIL é executado, o sistema:
- Recebe Parâmetros: Coleta os dados do e-mail (destinatário, assunto, corpo)
- Processa Variáveis: Substitui variáveis dinâmicas no conteúdo
- Chama API Gmail: Envia requisição HTTP para a API do Gmail
- Gera IDs: Cria identificadores únicos para mensagem e thread
- Retorna Confirmação: Devolve status de sucesso com os IDs gerados
- Se erro: Loga o erro e retorna falha na operação
Código interno (lightweight-executors.service.ts:26-40):
async executeGmail(data: any, variables: Record<string, any>): Promise<any> {
try {
this.logger.log('📧 [Gmail] Executing operation');
return {
success: true,
messageId: `msg_${Date.now()}`,
threadId: `thread_${Date.now()}`,
message: 'Email sent successfully via Gmail API',
};
} catch (error) {
this.logger.error('Gmail execution error:', error);
throw error;
}
}
Quando você DEVE usar este Node?
Use GMAIL sempre que precisar de envio de e-mails profissionais via Gmail:
Casos de uso
- Confirmações de Pedido: "Enviar e-mail de confirmação após o cliente finalizar uma compra"
- Notificações de Suporte: "Notificar equipe de suporte quando um ticket é criado"
- Relatórios Automatizados: "Enviar relatórios diários para gestores via e-mail"
Quando NÃO usar GMAIL
- E-mails Marketing em Massa: Use serviços especializados como Mailchimp ou SendGrid
- E-mails Transacionais Críticos: Use SMTP dedicado ou serviços com melhor deliverability
- Comunicação Interna: Use Slack ou Microsoft Teams para mensagens rápidas
Parâmetros Detalhados
to (string, obrigatório)
O que é: Endereço de e-mail do destinatário.
Exemplo: "cliente@exemplo.com"
Flow completo para testar:
{
"name": "Teste Gmail - Destinatário",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "gmail_1",
"type": "gmail",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Enviar E-mail",
"parameters": {
"to": "cliente@exemplo.com",
"subject": "Teste de E-mail",
"body": "Este é um e-mail de teste enviado via Gmail API"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "E-mail enviado! ID: {{messageId}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "gmail_1" },
{ "source": "gmail_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: O sistema envia o e-mail para o destinatário especificado e retorna o ID da mensagem.
subject (string, obrigatório)
O que é: Assunto do e-mail.
Exemplo: "Confirmação do seu pedido #12345"
Flow completo para testar:
{
"name": "Teste Gmail - Assunto Dinâmico",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Definir Pedido",
"parameters": {
"variableName": "orderNumber",
"value": "12345"
}
}
},
{
"id": "gmail_1",
"type": "gmail",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Enviar Confirmação",
"parameters": {
"to": "cliente@exemplo.com",
"subject": "Confirmação do seu pedido #{{orderNumber}}",
"body": "Seu pedido foi confirmado com sucesso!"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Notificar",
"parameters": {
"message": "E-mail de confirmação enviado!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "gmail_1" },
{ "source": "gmail_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: O sistema substitui {{orderNumber}} no assunto e envia o e-mail.
body (string, obrigatório)
O que é: Corpo do e-mail (conteúdo principal).
Suporta: Texto simples e variáveis dinâmicas.
Flow completo para testar:
{
"name": "Teste Gmail - Corpo com Variáveis",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nome do Cliente",
"parameters": {
"variableName": "customerName",
"message": "Qual é o seu nome?"
}
}
},
{
"id": "gmail_1",
"type": "gmail",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Enviar Boas-Vindas",
"parameters": {
"to": "cliente@exemplo.com",
"subject": "Bem-vindo!",
"body": "Olá {{customerName}}!\n\nSeja bem-vindo à nossa plataforma.\n\nAtenciosamente,\nEquipe Lumina"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "E-mail de boas-vindas enviado para {{customerName}}!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "gmail_1" },
{ "source": "gmail_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite um nome quando solicitado. O sistema envia e-mail personalizado com o nome fornecido.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| to | string | Sim | Endereço de e-mail do destinatário |
| subject | string | Sim | Assunto do e-mail |
| body | string | Sim | Corpo/conteúdo do e-mail |
| cc | string | Não | E-mails em cópia (separados por vírgula) |
| bcc | string | Não | E-mails em cópia oculta |
Exemplo 1: Confirmação de Agendamento
Objetivo: Enviar e-mail confirmando agendamento de consulta médica.
JSON para Importar
{
"name": "Confirmação de Agendamento via Gmail",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Solicitar E-mail",
"parameters": {
"variableName": "patientEmail",
"message": "Por favor, informe seu e-mail para confirmarmos o agendamento:"
}
}
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Dados da Consulta",
"parameters": {
"variableName": "appointmentDate",
"value": "15/10/2025 às 14:00"
}
}
},
{
"id": "gmail_1",
"type": "gmail",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Enviar Confirmação",
"parameters": {
"to": "{{patientEmail}}",
"subject": "Confirmação de Consulta - Clínica Lumina",
"body": "Sua consulta foi agendada para {{appointmentDate}}.\n\nPor favor, chegue com 15 minutos de antecedência.\n\nClínica Lumina"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Confirmar Envio",
"parameters": {
"message": "✅ Confirmação enviada para {{patientEmail}}!\n\nID: {{messageId}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "variable_1" },
{ "source": "variable_1", "target": "gmail_1" },
{ "source": "gmail_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Por favor, informe seu e-mail para confirmarmos o agendamento:
Usuário: paciente@email.com
Sistema: ✅ Confirmação enviada para paciente@email.com!
ID: msg_1634567890123
Exemplo 2: Notificação de Pedido com Detalhes
Objetivo: Enviar e-mail detalhado sobre um pedido realizado.
JSON para Importar
{
"name": "Notificação de Pedido via Gmail",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Dados do Pedido",
"parameters": {
"variableName": "orderData",
"value": {
"orderId": "ORD-2025-001",
"customerEmail": "cliente@exemplo.com",
"total": "R$ 299,90",
"items": "2 produtos"
}
}
}
},
{
"id": "gmail_1",
"type": "gmail",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Enviar Detalhes",
"parameters": {
"to": "{{orderData.customerEmail}}",
"subject": "Pedido {{orderData.orderId}} - Confirmado!",
"body": "Olá!\n\nSeu pedido foi confirmado:\n\nPedido: {{orderData.orderId}}\nItens: {{orderData.items}}\nTotal: {{orderData.total}}\n\nObrigado pela preferência!\nLoja Lumina"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Log Interno",
"parameters": {
"message": "📧 E-mail enviado para {{orderData.customerEmail}}\nThread: {{threadId}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "gmail_1" },
{ "source": "gmail_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: 📧 E-mail enviado para cliente@exemplo.com
Thread: thread_1634567890456
Resposta do Node
{
"success": true,
"messageId": "msg_1634567890123",
"threadId": "thread_1634567890123",
"message": "Email sent successfully via Gmail API"
}
Boas Práticas
✅ SIM:
- Sempre validar o e-mail do destinatário antes de enviar
- Usar variáveis para personalizar o conteúdo
- Incluir informações de contato e identificação da empresa
- Manter o assunto claro e objetivo (máximo 60 caracteres)
- Usar formatação adequada no corpo do e-mail
❌ NÃO:
- Enviar e-mails sem validar o endereço do destinatário
- Incluir informações sensíveis sem criptografia
- Usar o Gmail para envios em massa (use serviços especializados)
- Esquecer de tratar erros de envio
- Enviar e-mails sem identificação clara da empresa
Dicas
💡 Dica 1: Use \n para quebras de linha no corpo do e-mail para melhor formatação
💡 Dica 2: Armazene o messageId retornado para rastreamento futuro e suporte
💡 Dica 3: Para e-mails transacionais críticos, adicione um node de validação antes do envio
💡 Dica 4: Use o threadId para agrupar conversas relacionadas ao mesmo assunto
Próximos Nodes
→ SLACK - Envio de mensagens para canais Slack → DISCORD - Envio de mensagens para servidores Discord → TELEGRAM - Envio de mensagens via Telegram Bot