Conexión IMAP de ZOHO fallida a través del nodo Function con programación

Hola, tengo un par de buzones de correo de Zoho y otros usando un nodo de función con usuario y contraseña.
Contraseña de aplicación utilizada
Host: imap.zoho.com
puerto: 993
Verificación IMAP/SMTP: Sí
n8n no puede acceder a la bandeja de entrada de ZOHO con el nodo de función.
¿Alguna sugerencia o solución para este problema?
gracias

const imaps = require(‘imap-simple’);

const config = {
imap: {
user: ‘TU_EMAIL_COMPLETO@zoho.com’,
password: ‘TU_CONTRASEÑA_APP_16_CARACTERES’, // Sin espacios
host: ‘imap.zoho.com’,
port: 993,
tls: true,
authTimeout: 10000,
tlsOptions: {
servername: ‘imap.zoho.com’,
rejectUnauthorized: true
}
}
};

try {
// Pasa ‘config’ directamente aquí
const connection = await imaps.connect(config);

await connection.openBox('INBOX');

// Siempre cierra la conexión
connection.end();

return [{ json: { success: true } }];

} catch (err) {
return [{ json: { success: false, error: err.message } }];
}

Describe el problema/error/pregunta

¿Cuál es el mensaje de error (si corresponde)?

Por favor comparte tu flujo de trabajo

(Selecciona los nodos en tu lienzo y usa los atajos de teclado CMD+C/CTRL+C y CMD+V/CTRL+V para copiar y pegar el flujo de trabajo.)

Comparte el resultado devuelto por el último nodo

Información sobre tu configuración de n8n

  • Versión de n8n:
  • Base de datos (predeterminada: SQLite):
  • Configuración n8n EXECUTIONS_PROCESS (predeterminada: own, main):
  • Ejecutando n8n mediante (Docker, npm, n8n cloud, aplicación de escritorio):
  • Sistema operativo:

Hola @ITteck_hub , ¡bienvenido de vuelta!

Hay dos problemas aquí:

  1. require('imap-simple') no funcionará en el nodo Code por defecto. Los paquetes npm externos están bloqueados en la sandbox a menos que configures la variable de entorno NODE_FUNCTION_ALLOW_EXTERNAL e instales el paquete en tu instancia de n8n. Eso es mucha sobrecarga para algo que n8n maneja de forma nativa.

  2. Usa el nodo Email Trigger (IMAP) en su lugar. Configura las credenciales IMAP con:

    • User: tu email de Zoho

    • Password: tu contraseña de aplicación de 16 caracteres

    • Host: imap.zoho.com

    • Port: 993

    • SSL/TLS: habilitado

El trigger consulta automáticamente nuevos emails en su propio intervalo, así que no necesitas un Schedule Trigger separado.

¿Hay alguna razón específica por la que necesites el enfoque del nodo Code en lugar del trigger integrado?

Sí, ya está hecho ODE_FUNCTION_ALLOW_EXTERNAL.
El disparador de correo electrónico IMAP no tiene la flexibilidad de manejar múltiples Inbox/IDs de usuario.

¿Hay otras opciones?

buen día @ITteck_hub

Normalmente crearía una credencial de Disparador de Email IMAP por buzón, o dividiría el sondeo en flujos de trabajo separados. Si necesitas sondeo dinámico de buzones desde una lista de usuarios, una opción más segura es ejecutar un pequeño servicio/script IMAP externo y dejar que n8n lo llame con HTTP, en lugar de gestionar muchas sesiones IMAP y credenciales dentro de un nodo Code. También verifica de nuevo en el lado de Zoho, IMAP habilitado para el buzón, contraseña de aplicación válida, región/host correcto de la cuenta, y ninguna restricción de IP/seguridad bloqueando tu servidor n8n.

Para múltiples buzones dinámicamente, un patrón que funciona: almacena tu lista de buzones (usuario, contraseña_aplicación, host) en una hoja de Google o base de datos, luego usa un disparador de Schedule + bucle para iterar sobre cada fila. Dentro del bucle, el nodo Code usa imap-simple (con N8N_FUNCTION_ALLOW_EXTERNAL ya configurado) y abre una conexión nueva por buzon usando las credenciales de esa fila. Cada conexión se crea y se cierra dentro de la misma iteración, así evitas problemas de superposición de sesiones. Si el IMAP de Zoho sigue fallando por buzon, también verifica que cada cuenta tenga IMAP explícitamente habilitado en la configuración de Zoho Mail - Zoho a veces lo requiere por buzon incluso con una contraseña de aplicación a nivel de organización.

El disparador de IMAP de correo electrónico está funcionando.. Creo que intentaré obtener los detalles de ID de correo electrónico/contraseña/host de la base de datos en lugar de configurarlos en el archivo de función.

¿en el servidor de correo de Zoho o en el VPS de n8n?

@ITteck_hub
zoho