ZOHO IMAP 連接失敗:透過 Function node 搭配排程

嗨,我有來自 zoho 和其他使用函數節點(使用登入和密碼)的幾個電子郵件信箱。
已使用應用密碼
主機:imap.zoho.com
連接埠:993
IMAP/SMTP 核取方塊:是
n8n 無法使用函數節點存取 ZOHO 收件匣。
對於此問題有任何建議或解決方案嗎?
謝謝

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

const config = {
imap: {
user: ‘YOUR_FULL_EMAIL@zoho.com’,
password: ‘YOUR_16_CHAR_APP_PASSWORD’, // 沒有空格
host: ‘imap.zoho.com’,
port: 993,
tls: true,
authTimeout: 10000,
tlsOptions: {
servername: ‘imap.zoho.com’,
rejectUnauthorized: true
}
}
};

try {
// 直接在此處傳遞 ‘config’
const connection = await imaps.connect(config);

await connection.openBox('INBOX');

// 始終關閉連線
connection.end();

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

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

描述問題/錯誤/問題

錯誤訊息是什麼(如果有)?

請分享您的工作流程

(在您的畫布上選擇節點,並使用鍵盤快速鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 複製和貼上工作流程。)

分享最後一個節點傳回的輸出

您的 n8n 設定資訊

  • n8n 版本:
  • 資料庫(預設值:SQLite):
  • n8n EXECUTIONS_PROCESS 設定(預設值:own、main):
  • 執行 n8n 的方式(Docker、npm、n8n 雲端、桌面應用程式):
  • 作業系統:

@ITteck_hub ,歡迎回來!

這裡有兩個問題:

  1. require('imap-simple') 預設不會在 Code 節點中運作。外部 npm 套件在沙盒中被阻止,除非你設定 NODE_FUNCTION_ALLOW_EXTERNAL 環境變數並在你的 n8n 執行個體中安裝該套件。對於 n8n 原本就支援的功能來說,這樣做太麻煩了。

  2. 改用 Email Trigger (IMAP) 節點。使用以下設定 IMAP 憑證

    • 使用者:你的 Zoho 電子郵件

    • 密碼:你的 16 字元應用程式密碼

    • 主機:imap.zoho.com

    • 連接埠:993

    • SSL/TLS:已啟用

觸發程式會以自己的間隔自動輪詢新電子郵件,所以你不需要單獨的排程觸發程式。

你有特定的理由需要使用 Code 節點方法而不是內建觸發程式嗎?

是的,已經完成 ODE_FUNCTION_ALLOW_EXTERNAL。
Email trigger IMAP 沒有靈活性來處理多個 Inbox/user ids。

還有其他選項嗎?

早安 @ITteck_hub

我通常會為每個信箱建立一個 IMAP 電子郵件觸發認證,或將輪詢分割到不同的工作流程中。如果您需要從使用者清單進行動態信箱輪詢,更安全的選項是執行一個小型外部 IMAP 服務/指令碼,讓 n8n 透過 HTTP 呼叫它,而不是在程式碼節點內管理多個 IMAP 工作階段和認證。同時也要再次檢查 Zoho 端,確認信箱已啟用 IMAP、應用程式密碼有效、帳戶區域/主機正確,以及沒有 IP/安全性限制阻擋您的 n8n 伺服器。

對於多個信箱的動態處理,一個有效的模式是:將信箱清單(使用者、應用程式密碼、主機)存放在 Google 試算表或資料庫中,然後使用排程觸發器 + 迴圈來逐列迭代。在迴圈內,Code 節點使用 imap-simple(已設定 N8N_FUNCTION_ALLOW_EXTERNAL)並使用該列中的認證資訊為每個信箱開啟新連線。每個連線在同一次迭代內建立並關閉,這樣可以避免工作階段重疊問題。如果 Zoho 的 IMAP 仍然按信箱失敗,也要檢查每個帳戶在 Zoho Mail 設定中是否明確啟用 IMAP - 即使使用組織層級的應用程式密碼,Zoho 有時仍需要按信箱啟用。

Email IMAP 觸發器運作正常..我認為會試著從資料庫取得電子郵件 id/pw/host 詳細資訊,而不是在函式檔案中設定。

在 zoho 電子郵件伺服器還是 n8n vps 上?

@ITteck_hub
zoho