FORWARD_EMAIL - Encaminhar Email no Gmail
O que é este Node?
O FORWARD_EMAIL é o node responsável por encaminhar emails existentes para outros destinatários mantendo o conteúdo original com cabeçalho de encaminhamento.
Por que este Node existe?
Encaminhar emails é essencial para distribuir informações entre equipes e departamentos. O FORWARD_EMAIL existe para:
- Distribuir informações: Repassar emails importantes para outras pessoas
- Escalação: Encaminhar para departamentos responsáveis
- Compartilhamento: Distribuir conteúdo relevante com contexto
- Automação: Encaminhar automaticamente baseado em regras
Como funciona internamente?
Quando o FORWARD_EMAIL é executado, o sistema:
- Busca email original: Recupera conteúdo completo via messageId
- Prepara header: Adiciona cabeçalho "Forwarded message"
- Monta email: Inclui From, Date, Subject do original
- Adiciona corpo: Concatena corpo original
- Envia novo email: Cria nova thread com "Fwd:" no subject
- Se sucesso: Retorna messageId e referência ao original
Código interno (gmail-executor.service.ts:436-474):
private async forwardMessage(gmail: any, data: GmailNodeData): Promise<any> {
// Get original message
const originalMessage = await this.getMessage(gmail, data);
const forwardBody = `
---------- Forwarded message ---------
From: ${originalMessage.from}
Date: ${originalMessage.date}
Subject: ${originalMessage.subject}
To: ${originalMessage.to}
${originalMessage.body}
`;
const emailLines = [
`To: ${data.forwardTo}`,
`Subject: Fwd: ${originalMessage.subject}`,
'Content-Type: text/plain; charset=utf-8',
'',
forwardBody
];
const email = emailLines.join('\n');
const encodedEmail = Buffer.from(email).toString('base64url');
const response = await gmail.users.messages.send({
userId: 'me',
requestBody: {
raw: encodedEmail
}
});
return {
messageId: response.data.id,
threadId: response.data.threadId,
originalMessageId: data.messageId,
forwardedTo: data.forwardTo
};
}
Quando você DEVE usar este Node?
Use FORWARD_EMAIL sempre que precisar de distribuição de emails existentes:
Casos de uso
- Escalar suporte: "Encaminhar ticket complexo para especialista"
- Distribuir informações: "Repassar email importante para equipe"
- Automação de triagem: "Encaminhar emails por departamento"
- Backup de comunicação: "Encaminhar emails importantes para arquivo"
Quando NÃO usar FORWARD_EMAIL
- Nova mensagem: Use SEND_EMAIL para comunicação original
- Responder: Use REPLY_TO_EMAIL para manter thread
- Copiar: Use CC/BCC em SEND_EMAIL ao invés de encaminhar
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| oauth2 | object | Sim | Credenciais OAuth2 |
| operation | string | Sim | Deve ser "forward" |
| messageId | string | Sim | ID do email a encaminhar |
| forwardTo | string | Sim | Email do novo destinatário |
Exemplo 1: Encaminhar para Departamento
Objetivo: Encaminhar automaticamente emails para departamento correto
JSON para Importar
{
"name": "Triagem Automática de Emails",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Novo Email" }
},
{
"id": "gmail_get_1",
"type": "gmail",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Ler Email",
"operation": "get",
"oauth2": {
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_SECRET",
"refreshToken": "YOUR_TOKEN"
},
"messageId": "{{triggerEmailId}}"
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 500, "y": 100 },
"data": {
"label": "É Técnico?",
"parameters": {
"condition": "{{gmail_get_1.subject}} contains 'bug' OR {{gmail_get_1.subject}} contains 'erro'"
}
}
},
{
"id": "gmail_forward_1",
"type": "gmail",
"position": { "x": 700, "y": 50 },
"data": {
"label": "Encaminhar TI",
"operation": "forward",
"oauth2": {
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_SECRET",
"refreshToken": "YOUR_TOKEN"
},
"messageId": "{{gmail_get_1.id}}",
"forwardTo": "ti@empresa.com"
}
},
{
"id": "gmail_forward_2",
"type": "gmail",
"position": { "x": 700, "y": 150 },
"data": {
"label": "Encaminhar Comercial",
"operation": "forward",
"oauth2": {
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_SECRET",
"refreshToken": "YOUR_TOKEN"
},
"messageId": "{{gmail_get_1.id}}",
"forwardTo": "comercial@empresa.com"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Email encaminhado para departamento responsável"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "gmail_get_1" },
{ "source": "gmail_get_1", "target": "condition_1" },
{ "source": "condition_1", "target": "gmail_forward_1", "label": "true" },
{ "source": "condition_1", "target": "gmail_forward_2", "label": "false" },
{ "source": "gmail_forward_1", "target": "message_1" },
{ "source": "gmail_forward_2", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Email encaminhado para departamento responsável
Boas Práticas
✅ SIM: - Verifique conteúdo antes de encaminhar - Use forwardTo específico por departamento - Mantenha histórico original intacto
❌ NÃO: - Não encaminhe sem validar destinatário - Não altere conteúdo original
Dicas
💡 Dica 1: Combine com CONDITION para triagem inteligente 💡 Dica 2: Use GET_EMAIL_BY_ID para analisar antes de encaminhar 💡 Dica 3: Subject com "Fwd:" é adicionado automaticamente
Próximo Node
→ REPLY_TO_EMAIL - Responder email → GET_EMAIL_BY_ID - Buscar email → SEND_EMAIL - Enviar novo